Gaokun Wang 1 өдөр өмнө
commit
1c1ec07455

+ 38 - 0
.gitignore

@@ -0,0 +1,38 @@
+target/
+!.mvn/wrapper/maven-wrapper.jar
+!**/src/main/**/target/
+!**/src/test/**/target/
+
+### IntelliJ IDEA ###
+.idea/modules.xml
+.idea/jarRepositories.xml
+.idea/compiler.xml
+.idea/libraries/
+*.iws
+*.iml
+*.ipr
+
+### Eclipse ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+build/
+!**/src/main/**/build/
+!**/src/test/**/build/
+
+### VS Code ###
+.vscode/
+
+### Mac OS ###
+.DS_Store

+ 16 - 0
.idea/checkstyle-idea.xml

@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="CheckStyle-IDEA" serialisationVersion="2">
+    <checkstyleVersion>10.21.1</checkstyleVersion>
+    <scanScope>JavaOnly</scanScope>
+    <copyLibs>true</copyLibs>
+    <option name="thirdPartyClasspath" />
+    <option name="activeLocationIds" />
+    <option name="locations">
+      <list>
+        <ConfigurationLocation id="bundled-sun-checks" type="BUNDLED" scope="All" description="Sun Checks">(bundled)</ConfigurationLocation>
+        <ConfigurationLocation id="bundled-google-checks" type="BUNDLED" scope="All" description="Google Checks">(bundled)</ConfigurationLocation>
+      </list>
+    </option>
+  </component>
+</project>

+ 11 - 0
.idea/encodings.xml

@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="Encoding">
+    <file url="file://$PROJECT_DIR$/dev-bom/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/dev-bom/src/main/resources" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/dev-start/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/dev-start/src/main/resources" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/src/main/resources" charset="UTF-8" />
+  </component>
+</project>

+ 8 - 0
.idea/inspectionProfiles/Project_Default.xml

@@ -0,0 +1,8 @@
+<component name="InspectionProjectProfileManager">
+  <profile version="1.0">
+    <option name="myName" value="Project Default" />
+    <inspection_tool class="JavadocDeclaration" enabled="true" level="WARNING" enabled_by_default="true">
+      <option name="ADDITIONAL_TAGS" value="description,date" />
+    </inspection_tool>
+  </profile>
+</component>

+ 12 - 0
.idea/misc.xml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ExternalStorageConfigurationManager" enabled="true" />
+  <component name="MavenProjectsManager">
+    <option name="originalFiles">
+      <list>
+        <option value="$PROJECT_DIR$/pom.xml" />
+      </list>
+    </option>
+  </component>
+  <component name="ProjectRootManager" version="2" languageLevel="JDK_21" default="true" project-jdk-name="graalvm-ce-21" project-jdk-type="JavaSDK" />
+</project>

+ 6 - 0
.idea/vcs.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="VcsDirectoryMappings">
+    <mapping directory="" vcs="Git" />
+  </component>
+</project>

+ 117 - 0
.idea/workspace.xml

@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="AutoImportSettings">
+    <option name="autoReloadType" value="SELECTIVE" />
+  </component>
+  <component name="ChangeListManager">
+    <list default="true" id="ddfc90ba-bfcc-4e61-9141-c4d87f4ebe91" name="更改" comment="" />
+    <option name="SHOW_DIALOG" value="false" />
+    <option name="HIGHLIGHT_CONFLICTS" value="true" />
+    <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
+    <option name="LAST_RESOLUTION" value="IGNORE" />
+  </component>
+  <component name="Git.Settings">
+    <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
+  </component>
+  <component name="MavenImportPreferences">
+    <option name="generalSettings">
+      <MavenGeneralSettings>
+        <option name="customMavenHome" value="D:\env\apache-maven-3.8.8" />
+        <option name="mavenHomeTypeForPersistence" value="CUSTOM" />
+        <option name="userSettingsFile" value="D:\env\apache-maven-3.8.8\conf\settings.xml" />
+      </MavenGeneralSettings>
+    </option>
+  </component>
+  <component name="ProjectColorInfo"><![CDATA[{
+  "customColor": "",
+  "associatedIndex": 1
+}]]></component>
+  <component name="ProjectId" id="33ERuojpJSzVgzqlyyiMw2NTobv" />
+  <component name="ProjectViewState">
+    <option name="hideEmptyMiddlePackages" value="true" />
+    <option name="showLibraryContents" value="true" />
+  </component>
+  <component name="PropertiesComponent"><![CDATA[{
+  "keyToString": {
+    "ASKED_SHARE_PROJECT_CONFIGURATION_FILES": "true",
+    "RunOnceActivity.ShowReadmeOnStart": "true",
+    "RunOnceActivity.git.unshallow": "true",
+    "git-widget-placeholder": "master",
+    "kotlin-language-version-configured": "true",
+    "last_opened_file_path": "D:/code/devops-tools/devops-tools/dev-start/src",
+    "node.js.detected.package.eslint": "true",
+    "node.js.detected.package.tslint": "true",
+    "node.js.selected.package.eslint": "(autodetect)",
+    "node.js.selected.package.tslint": "(autodetect)",
+    "nodejs_package_manager_path": "npm",
+    "project.structure.last.edited": "模块",
+    "project.structure.proportion": "0.0",
+    "project.structure.side.proportion": "0.0",
+    "settings.editor.selected.configurable": "MavenSettings",
+    "vue.rearranger.settings.migration": "true",
+    "应用程序.App.executor": "Debug"
+  }
+}]]></component>
+  <component name="RecentsManager">
+    <key name="CopyFile.RECENT_KEYS">
+      <recent name="D:\code\devops-tools\devops-tools\dev-start\src" />
+      <recent name="D:\code\devops-tools\devops-tools\dev-start\src\main\resources\com\eco\vip\css" />
+      <recent name="D:\code\devops-tools\devops-tools\dev-start\src\main\resources\com\eco\vip\fxml" />
+    </key>
+  </component>
+  <component name="RunManager">
+    <configuration name="App" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
+      <option name="MAIN_CLASS_NAME" value="com.eco.vip.App" />
+      <module name="dev-start" />
+      <option name="VM_PARAMETERS" value="--module-path &quot;D:\env\Java\javafx-sdk-21.0.8\lib&quot; --add-modules javafx.controls,javafx.fxml" />
+      <extension name="coverage">
+        <pattern>
+          <option name="PATTERN" value="com.eco.vip.*" />
+          <option name="ENABLED" value="true" />
+        </pattern>
+      </extension>
+      <method v="2">
+        <option name="Make" enabled="true" />
+      </method>
+    </configuration>
+    <recent_temporary>
+      <list>
+        <item itemvalue="应用程序.App" />
+      </list>
+    </recent_temporary>
+  </component>
+  <component name="SharedIndexes">
+    <attachedChunks>
+      <set>
+        <option value="bundled-jdk-9823dce3aa75-a94e463ab2e7-intellij.indexing.shared.core-IU-243.25659.59" />
+        <option value="bundled-js-predefined-d6986cc7102b-1632447f56bf-JavaScript-IU-243.25659.59" />
+      </set>
+    </attachedChunks>
+  </component>
+  <component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="应用程序级" UseSingleDictionary="true" transferred="true" />
+  <component name="TaskManager">
+    <task active="true" id="Default" summary="默认任务">
+      <changelist id="ddfc90ba-bfcc-4e61-9141-c4d87f4ebe91" name="更改" comment="" />
+      <created>1758880470912</created>
+      <option name="number" value="Default" />
+      <option name="presentableId" value="Default" />
+      <updated>1758880470912</updated>
+      <workItem from="1758880471986" duration="911000" />
+    </task>
+    <servers />
+  </component>
+  <component name="TypeScriptGeneratedFilesManager">
+    <option name="version" value="3" />
+  </component>
+  <component name="Vcs.Log.Tabs.Properties">
+    <option name="TAB_STATES">
+      <map>
+        <entry key="MAIN">
+          <value>
+            <State />
+          </value>
+        </entry>
+      </map>
+    </option>
+  </component>
+</project>

+ 33 - 0
dev-bom/pom.xml

@@ -0,0 +1,33 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>org.eco.vip</groupId>
+    <artifactId>dev-bom</artifactId>
+    <name>${project.artifactId}</name>
+    <version>${revision}</version>
+    <description>
+        eco-bom 全局依赖项
+    </description>
+
+    <properties>
+        <revision>1.0</revision>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <java.version>21</java.version>
+        <!-- 17.0.1, 21-ea+5 -->
+        <javafx.version>21-ea+5</javafx.version>
+    </properties>
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.openjfx</groupId>
+                <artifactId>javafx-controls</artifactId>
+                <version>${javafx.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.openjfx</groupId>
+                <artifactId>javafx-fxml</artifactId>
+                <version>${javafx.version}</version>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+</project>

+ 129 - 0
dev-start/pom.xml

@@ -0,0 +1,129 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.eco.vip</groupId>
+        <artifactId>devops-tools</artifactId>
+        <version>${revision}</version>
+    </parent>
+    <artifactId>dev-start</artifactId>
+    <name>${project.artifactId}</name>
+    <version>${revision}</version>
+
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <java.version>21</java.version>
+        <maven.compiler.source>${java.version}</maven.compiler.source>
+        <maven.compiler.target>${java.version}</maven.compiler.target>
+        <!-- https://search.maven.org/artifact/org.openjfx/javafx -->
+        <!-- 17.0.1, 21-ea+5 -->
+        <javafx.staticSdk.version>21-ea+5</javafx.staticSdk.version>
+        <!--
+            插件更新日志:https://docs.gluonhq.com/#_what_is_new
+                - 大于1.0.11,构建失败,找不到rc.exe,需要配置环境变量:C:\Program Files (x86)\Windows Kits\10\bin\10.0.19041.0\x64
+
+            C:\Users\用户名\.gluon\substrate
+            https://download2.gluonhq.com/substrate/javafxstaticsdk/openjfx-19-ea+8-windows-x86_64-static.zip
+         -->
+        <gluonfx-maven-plugin.version>1.0.22</gluonfx-maven-plugin.version>
+        <start-class>com.eco.vip.App</start-class>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.openjfx</groupId>
+            <artifactId>javafx-controls</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.openjfx</groupId>
+            <artifactId>javafx-fxml</artifactId>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>3.8.1</version>
+                <configuration>
+                    <release>${java.version}</release>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.openjfx</groupId>
+                <artifactId>javafx-maven-plugin</artifactId>
+                <version>0.0.8</version>
+                <configuration>
+                    <mainClass>${start-class}</mainClass>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>com.gluonhq</groupId>
+                <artifactId>gluonfx-maven-plugin</artifactId>
+                <version>${gluonfx-maven-plugin.version}</version>
+                <configuration>
+                    <mainClass>${start-class}</mainClass>
+                    <!--
+                    <javaStaticSdkVersion>11-ea+10</javaStaticSdkVersion>
+                    -->
+                    <javafxStaticSdkVersion>${javafx.staticSdk.version}</javafxStaticSdkVersion>
+                    <!-- JavaFx 中使用 ResourceBundle.getBundle("xxxxxx") 的路径,如果没有则不需要配置 -->
+                    <!--<bundlesList>
+                        <list>com.mueeee.desktopjavafx</list>
+                    </bundlesList>-->
+                    <!-- 允许的资源文件后缀 -->
+                    <resourcesList>
+                        <list>.*\\.properties$</list>
+                    </resourcesList>
+                    <!-- 涉及反射的类 -->
+                    <reflectionList>
+                        <list>com.eco.vip.ctrl.MainCtrl</list>
+                    </reflectionList>
+                    <nativeImageArgs>
+                        <!-- “快速构建”模式,以减少在开发过程中生成本机可执行文件所需的时间。请注意,此模式可能会对峰值性能和生成的可执行文件的大小产生负面影响,因此建议仅用于开发目的。 -->
+                        <!--<arg>-Ob</arg>-->
+
+                        <!-- 现在默认启用并已弃用,因为不再需要它。 -->
+                        <!--<arg>&#45;&#45;allow-incomplete-classpath</arg>-->
+
+                        <!--
+                        2023-05-04,GraalVM-22.3.0
+                        修复在Linux上编译报错:Fatal error: java.lang.IllegalAccessError: class com.gluonhq.substrate.feature.GluonFeature (in unnamed module @0x6c1832aa) cannot access class com.oracle.svm.core.jdk.NativeLibrarySupport (in module org.graalvm.nativeimage.builder) because module org.graalvm.nativeimage.builder does not export com.oracle.svm.core.jdk to unnamed module @0x6c1832aa
+                        https://github.com/oracle/graal/issues/5265
+                        -->
+                        <arg>--add-exports=org.graalvm.nativeimage.builder/com.oracle.svm.core.jdk=ALL-UNNAMED</arg>
+
+                        <!--
+                        Native-image building on Windows currently only supports target architecture: AMD64 (?? unsupported))
+                        GluonFx + GraalVM 21,21之前的版本没有此问题,非GluonFx插件项目的没有此问题
+                        1 目前有一些解决方案,VS语言包删除中文,添加英文
+                        2 系统设置 - 时间和语言 - 语言和区域 - 管理语言设置 - 更改系统区域设置 - 勾选:Beta版本:使用 Unicode UTF-8 提供全球语言支持
+                        3 添加参数 -H:-CheckToolchain,跳过环境检查
+                         -->
+                        <arg>-H:-CheckToolchain</arg>
+                    </nativeImageArgs>
+                    <releaseConfiguration>
+                        <!-- all targets -->
+                        <!--<packageType></packageType>-->
+                        <description>desktop-javafx</description>
+                        <vendor>muetech</vendor>
+                        <version>${version}</version>
+                        <!-- macOS -->
+                        <macAppStore>false</macAppStore>
+                        <macSigningUserName>muetech</macSigningUserName>
+                        <!--<macAppCategory>public.app-category.utilities</macAppCategory>-->
+                    </releaseConfiguration>
+                </configuration>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>build</goal>
+                        </goals>
+                        <phase>package</phase>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+</project>

+ 85 - 0
dev-start/src/main/java/com/eco/vip/App.java

@@ -0,0 +1,85 @@
+package com.eco.vip;
+
+
+import com.eco.vip.config.AppConfig;
+import javafx.application.Application;
+import javafx.fxml.FXMLLoader;
+import javafx.scene.Parent;
+import javafx.scene.Scene;
+import javafx.scene.image.Image;
+import javafx.stage.Screen;
+import javafx.stage.Stage;
+
+import java.io.IOException;
+import java.util.Objects;
+import java.util.regex.Pattern;
+
+/**
+ * @description App
+ *
+ * @author GaoKunW
+ * @date 2025/9/26 17:35
+ */
+public class App extends Application {
+
+    private static Scene scene;
+
+    public static void main(String[] args) {
+        // 解决Linux上编译为native-image时运行错误:
+        String osName = System.getProperty("os.name", "");
+        if (Pattern.matches("Linux.*", osName)) {
+            System.setProperty("prism.forceGPU", "true");
+        }
+        // Init & Launch
+        AppConfig.init();
+        launch();
+    }
+
+    @Override
+    public void init() throws Exception {
+        System.out.println("init");
+        super.init();
+        // 设置系统屏幕缩放比例
+        try {
+            var scaleX = Screen.getScreens().get(0).getOutputScaleX();
+            System.setProperty("glass.win.uiScale", String.valueOf(scaleX));
+        } catch (Exception ignored) {
+            System.setProperty("glass.win.uiScale", "1.0");
+        }
+        // 在非JavaFX应用程序主线程上运行指定的Runnable
+        /*Platform.runLater(() -> {
+            Alert alert = new Alert(Alert.AlertType.INFORMATION);
+            alert.setContentText("Content Text");
+            alert.show();
+        });*/
+    }
+
+    @Override
+    public void start(Stage stage) throws IOException {
+        System.out.println("start");
+        // 加载并创建主场景
+        Parent root = loadFXML("fxml/Main");
+        scene = new Scene(root, AppConfig.stageWidth, AppConfig.stageHeight);
+        // 设置窗口信息
+        stage.setTitle(AppConfig.title);
+        stage.setResizable(AppConfig.stageResizable);
+        stage.getIcons().add(new Image(Objects.requireNonNull(App.class.getResourceAsStream(AppConfig.icon))));
+        stage.setScene(scene);
+        stage.show();
+    }
+
+    @Override
+    public void stop() throws Exception {
+        System.out.println("stop");
+        super.stop();
+    }
+
+    public static void setRoot(String fxml) throws IOException {
+        scene.setRoot(loadFXML(fxml));
+    }
+
+    private static Parent loadFXML(String fxml) throws IOException {
+        FXMLLoader fxmlLoader = new FXMLLoader(App.class.getResource(fxml + ".fxml"));
+        return fxmlLoader.load();
+    }
+}

+ 11 - 0
dev-start/src/main/java/com/eco/vip/DesktopJavaFxApp.java

@@ -0,0 +1,11 @@
+package com.eco.vip;
+
+
+/**
+ * @description DesktopJavaFxApp
+ *
+ * @author GaoKunW
+ * @date 2025/9/26 17:38
+ */
+public class DesktopJavaFxApp {
+}

+ 42 - 0
dev-start/src/main/java/com/eco/vip/config/AppConfig.java

@@ -0,0 +1,42 @@
+package com.eco.vip.config;
+
+
+import com.eco.vip.App;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Properties;
+
+/**
+ * @description AppConfig
+ *
+ * @author GaoKunW
+ * @date 2025/9/26 17:39
+ */
+public class AppConfig {
+    // 应用标题
+    public static String title = "JavaFx Application";
+    // 应用图标
+    public static String icon = "icon/icon.png";
+    // 窗口宽度
+    public static int stageWidth = 640;
+    // 窗口高度
+    public static int stageHeight = 480;
+    // 允许调整窗口尺寸
+    public static boolean stageResizable = true;
+
+    public static void init() {
+        try {
+            Properties properties = new Properties();
+            InputStream in = App.class.getResourceAsStream("app.properties");
+            properties.load(in);
+            title = properties.getProperty("title");
+            icon = properties.getProperty("icon");
+            stageWidth = Integer.parseInt(properties.getProperty("stage.width"));
+            stageHeight = Integer.parseInt(properties.getProperty("stage.height"));
+            stageResizable = Boolean.parseBoolean(properties.getProperty("stage.resizable"));
+        } catch (IOException e) {
+            System.out.println(e.getMessage());
+        }
+    }
+}

+ 70 - 0
dev-start/src/main/java/com/eco/vip/ctrl/MainCtrl.java

@@ -0,0 +1,70 @@
+package com.eco.vip.ctrl;
+
+
+import javafx.event.ActionEvent;
+import javafx.fxml.Initializable;
+import javafx.scene.control.Alert;
+import javafx.scene.control.Button;
+import javafx.scene.layout.Pane;
+import javafx.stage.FileChooser;
+import javafx.stage.Window;
+
+import java.io.File;
+import java.net.URL;
+import java.util.ResourceBundle;
+
+/**
+ * @description MainCtrl
+ *
+ * @author GaoKunW
+ * @date 2025/9/26 17:43
+ */
+public class MainCtrl implements Initializable {
+
+    // 主容器
+    public Pane rootPane;
+
+    public Button btnAlert, btnChooseFile;
+
+    @Override
+    public void initialize(URL url, ResourceBundle resourceBundle) {
+        System.out.println("initialize: " + url.getPath());
+    }
+
+
+    /**
+     * 弹出框按钮单击事件
+     * @param actionEvent actionEvent
+     */
+    public void onBtnAlertClick(ActionEvent actionEvent) {
+        String javaVersion = System.getProperty("java.version");
+        String javafxVersion = System.getProperty("javafx.version");
+        // ...
+        Alert alert = new Alert(Alert.AlertType.INFORMATION);
+        alert.setHeaderText(null);
+        alert.setContentText("Hello, JavaFX " + javafxVersion + ", running on Java " + javaVersion + ".");
+        alert.show();
+    }
+
+    /**
+     * 选择文件按钮单机事件
+     * @param actionEvent actionEvent
+     */
+    public void onBtnChooseFileClick(ActionEvent actionEvent) {
+        Window window = rootPane.getScene().getWindow();
+        FileChooser fileChooser = new FileChooser();
+        // 文件类型过滤器
+        /*FileChooser.ExtensionFilter filter = new FileChooser.ExtensionFilter("Excel files (*.xls, *.xlsx)", "*.xls", "*.xlsx");
+        fileChooser.getExtensionFilters().add(filter);*/
+        // ...
+        File file = fileChooser.showOpenDialog(window);
+        String fileName = file == null ? "" : file.getName();
+        String fileAbsolutePath = file == null ? "" : file.getAbsolutePath();
+
+        if (file != null) {
+            Alert alert = new Alert(Alert.AlertType.INFORMATION);
+            alert.setContentText("文件路径:" + fileAbsolutePath);
+            alert.show();
+        }
+    }
+}

+ 5 - 0
dev-start/src/main/resources/com/eco/vip/app.properties

@@ -0,0 +1,5 @@
+title=DevOPS
+icon=icon/icon.png
+stage.width=640
+stage.height=440
+stage.resizable=true

+ 3 - 0
dev-start/src/main/resources/com/eco/vip/css/Main.css

@@ -0,0 +1,3 @@
+.root {
+    /*-fx-background-color: #f0f0f0;*/
+}

+ 11 - 0
dev-start/src/main/resources/com/eco/vip/fxml/Main.fxml

@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.scene.control.*?>
+<?import javafx.scene.layout.*?>
+
+<Pane fx:id="rootPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="480.0" prefWidth="640.0" stylesheets="@../css/Main.css" xmlns="http://javafx.com/javafx/10.0.2-internal" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.eco.vip.ctrl.MainCtrl">
+   <children>
+      <Button fx:id="btnAlert" layoutX="14.0" layoutY="14.0" mnemonicParsing="false" onAction="#onBtnAlertClick" text="提示框" />
+      <Button fx:id="btnChooseFile" layoutX="79.0" layoutY="14.0" mnemonicParsing="false" onAction="#onBtnChooseFileClick" text="选择文件" />
+   </children>
+</Pane>

BIN
dev-start/src/main/resources/com/eco/vip/icon/icon.ico


BIN
dev-start/src/main/resources/com/eco/vip/icon/icon.png


BIN
dev-start/src/windows/assets/icon.ico


+ 37 - 0
pom.xml

@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>org.eco.vip</groupId>
+    <artifactId>devops-tools</artifactId>
+    <version>${revision}</version>
+    <packaging>pom</packaging>
+    <modules>
+        <module>dev-bom</module>
+        <module>dev-start</module>
+    </modules>
+
+    <properties>
+        <revision>1.0</revision>
+        <maven.compiler.source>21</maven.compiler.source>
+        <maven.compiler.target>21</maven.compiler.target>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+
+    <!-- 依赖管理 -->
+    <dependencyManagement>
+        <dependencies>
+            <!-- 全局的依赖配置-->
+            <dependency>
+                <groupId>org.eco.vip</groupId>
+                <artifactId>dev-bom</artifactId>
+                <version>${revision}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
+</project>