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

配置Maven Profile打包target中Java类生成Jar却未包含类的问题

问题原因及解决方法

你的配置存在两个核心问题:

1. 错误指定了打包文件类型

maven-jar-plugin的作用是打包编译后的.class字节码文件,但你在<includes>里配置的target/generated-sources/main/**/*.java是Java源文件路径,插件默认不会将源文件打包进Jar(这也不符合Java程序包的常规打包逻辑)。

2. 生成的源文件未被Maven编译

target/generated-sources/main目录下的Java文件,默认不会被Maven编译插件识别为源文件目录,所以这些源码不会被编译成.class文件,自然无法被打包进Jar。


修正方案

第一步:调整Jar插件配置,打包class文件

将<includes>的路径改为指向编译后的class文件,若要打包所有class文件,配置如下:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <version>3.2.0</version>
    <configuration>
        <includes>
            <include>**/*.class</include>
        </includes>
        <archive>
            <manifest>
                <mainClass>com.MyMainClass</mainClass>
            </manifest>
        </archive>
    </configuration>
</plugin>

如果仅需打包target/generated-sources/main下源码编译后的class,可根据实际包结构指定路径,比如com/my/package/**/*.class(需对应生成源码的包结构)。

第二步:让Maven识别生成的源文件目录

添加build-helper-maven-plugin,将target/generated-sources/main加入编译源目录,确保源码被编译:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>build-helper-maven-plugin</artifactId>
    <version>3.3.0</version>
    <executions>
        <execution>
            <id>add-source</id>
            <phase>generate-sources</phase>
            <goals>
                <goal>add-source</goal>
            </goals>
            <configuration>
                <sources>
                    <source>target/generated-sources/main</source>
                </sources>
            </configuration>
        </execution>
    </executions>
</plugin>

完成上述配置后,执行mvn clean package -P my-jar,生成的Jar中就会包含对应的class文件了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 12:35:13