You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何像Ant一样构建Maven JavaFX项目以实现轻量化部署?

实现Maven构建分离依赖与项目代码的方案

1. 配置Maven生成不含依赖的可执行JAR

通过maven-jar-plugin构建仅包含项目代码的可执行JAR,并在MANIFEST文件中声明依赖库的路径(默认指向同级lib目录)。在pom.xml中添加如下配置:

<build>
    <plugins>
        <!-- 生成不含依赖的可执行JAR -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>3.3.0</version>
            <configuration>
                <archive>
                    <manifest>
                        <!-- 替换为你的JavaFX主类全路径 -->
                        <mainClass>com.yourpackage.YourMainApplication</mainClass>
                        <!-- 声明依赖库所在路径,后续依赖会放在lib目录下 -->
                        <classpathPrefix>lib/</classpathPrefix>
                        <addClasspath>true</addClasspath>
                    </manifest>
                </archive>
            </configuration>
        </plugin>
    </plugins>
</build>

2. 自动复制依赖到指定目录

使用maven-dependency-plugin将项目依赖批量复制到构建输出目录的lib文件夹,与项目JAR保持同级。在上述plugins节点中追加:

<!-- 复制依赖到lib目录 -->
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <version>3.6.0</version>
    <executions>
        <execution>
            <id>copy-dependencies</id>
            <phase>package</phase>
            <goals>
                <goal>copy-dependencies</goal>
            </goals>
            <configuration>
                <!-- 依赖输出目录,与项目JAR同目录下的lib -->
                <outputDirectory>${project.build.directory}/lib</outputDirectory>
                <!-- 可选:排除不需要打包的依赖 -->
                <!-- <excludeGroupIds>com.example</excludeGroupIds> -->
            </configuration>
        </execution>
    </executions>
</plugin>

3. 构建、部署与运行

  • 执行构建命令:mvn clean package,构建完成后,target目录下会生成两个核心部分:
    • 仅含项目代码的可执行JAR(如your-project-1.0.jar)
    • 存放所有依赖库的lib文件夹
  • 部署策略:首次部署时将项目JAR和lib文件夹一同分发到目标节点;后续若依赖无变更,仅需部署更新后的项目JAR即可
  • 运行项目:在目标节点进入JAR所在目录,执行java -jar your-project-1.0.jar,JVM会自动从同级lib目录加载依赖

JavaFX模块化项目的额外处理

如果你的项目使用了module-info.java进行模块化配置,需在maven-jar-plugin的manifest节点中添加模块路径声明:

<manifestEntries>
    <Module-Path>lib/</Module-Path>
</manifestEntries>

运行时也可通过命令显式指定模块路径:java -p lib -m your.module/com.yourpackage.YourMainApplication

内容的提问来源于stack exchange,提问作者Kanishka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 20:08:12