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

如何修正Maven配置,为仅含测试类的项目生成含类的JAR包

问题分析与解决方案

问题根源

Maven遵循默认约定:

  • 主代码目录为src/main/java,编译后产物打包到主JAR(即jarName-1.0.0-SNAPSHOT.jar)
  • 测试代码目录为src/test/java,编译后产物单独打包到jarName-tests.jar

你的项目没有src/main/java目录,因此主JAR没有可打包的内容,出现空JAR警告;所有测试类都被打包到了jarName-tests.jar中。

修正方案(二选一即可)

方案1:将测试目录设为主源码目录

修改Maven的源码目录配置,让src/test/java作为主代码目录,这样编译和打包时会直接将该目录下的类输出到主JAR中:

<build>
    <!-- 把src/test/java设为主源码目录 -->
    <sourceDirectory>src/test/java</sourceDirectory>
    <!-- 若不需要单独的测试目录,可注释或删除下方配置;如需保留,可指定其他目录 -->
    <!-- <testSourceDirectory>src/test/java</testSourceDirectory> -->
    
    <!-- 可选:禁用测试JAR打包,避免生成多余的jarName-tests.jar -->
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>3.3.0</version>
            <executions>
                <execution>
                    <id>default-test-jar</id>
                    <phase>none</phase>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

执行mvn package后,主JARjarName-1.0.0-SNAPSHOT.jar会包含所有测试类,且不会生成多余的tests.jar。

方案2:配置主JAR打包测试类的编译产物

保持原目录结构不变,修改maven-jar-plugin的配置,让主JAR包含target/test-classes下的编译结果:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>3.3.0</version>
            <configuration>
                <!-- 指定主JAR的类目录为测试类编译输出目录 -->
                <classesDirectory>${project.build.testOutputDirectory}</classesDirectory>
            </configuration>
            <!-- 可选:禁用默认的测试JAR打包,避免生成多余的jarName-tests.jar -->
            <executions>
                <execution>
                    <id>default-test-jar</id>
                    <phase>none</phase>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

执行mvn package后,主JAR会包含所有测试类,且不会出现空JAR警告和多余的tests.jar。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 16:52:24