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

Maven单项目为每个Java包生成独立Jar包的问题求助

解决Maven单项目生成多包独立Jar的问题

你的问题核心在于maven-jar-plugin的路径规则使用错误——你写的是文件系统层面的绝对/项目根路径,但插件需要的是基于编译后class文件目录(target/classes)的类路径格式。另外,用includes明确指定要包含的包,比用excludes排除其他包更清晰、不易出错,尤其适合固定包结构的场景。

下面是修正后的完整配置,每个执行单元只打包对应包的内容:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <version>3.3.0</version> <!-- 建议升级到较新版本,兼容性更优 -->
    <executions>
        <!-- 打包first包的独立Jar -->
        <execution>
            <id>first-package-jar</id>
            <goals>
                <goal>jar</goal>
            </goals>
            <configuration>
                <classifier>first-jar</classifier>
                <!-- 仅包含first包下所有类(含子包) -->
                <includes>
                    <include>first/**</include>
                </includes>
            </configuration>
        </execution>
        <!-- 打包second包的独立Jar -->
        <execution>
            <id>second-package-jar</id>
            <goals>
                <goal>jar</goal>
            </goals>
            <configuration>
                <classifier>second-jar</classifier>
                <includes>
                    <include>second/**</include>
                </includes>
            </configuration>
        </execution>
        <!-- 打包third包的独立Jar -->
        <execution>
            <id>third-package-jar</id>
            <goals>
                <goal>jar</goal>
            </goals>
            <configuration>
                <classifier>third-jar</classifier>
                <includes>
                    <include>third/**</include>
                </includes>
            </configuration>
        </execution>
    </executions>
</plugin>

关键细节说明:

  • 路径匹配规则:first/**是基于target/classes的相对路径,能精准匹配first包下的所有class文件(包括子包类),插件可以正确识别。
  • 版本升级:把插件版本从2.4更新到3.3.0(或最新稳定版),避免旧版本的路径解析bug。
  • includes的优势:明确指定打包范围,比排除其他包的写法更直观,后续项目结构变动时也不容易出错。

执行mvn package后,你会在target目录下得到三个独立的Jar文件:

  • [你的项目名]-first-jar.jar
  • [你的项目名]-second-jar.jar
  • [你的项目名]-third-jar.jar

每个Jar内只会包含对应包的类文件,完全满足你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 12:47:33