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

Maven项目中如何将Java文件作为资源打包进Jar包?

问题解答

为什么Test.java文件不在Jar包中?

是的,你猜的没错——Maven默认会把.java文件识别为源码文件,哪怕你把它放在src/main/resources目录下,它依然会被Java编译器编译成.class文件,而原始的.java文件不会被复制到输出目录(target/classes),自然也就不会出现在最终的Jar包里。

另外,.txt文件能正常打包是因为Maven资源插件默认包含这类非源码格式的文件,而.java被默认排除,属于源码编译流程的处理对象。

如何将.java文件作为资源打包进Jar?

你需要修改Maven的资源配置,强制让资源插件把.java文件当成资源文件复制到输出目录,具体步骤如下:

在项目的pom.xml中添加<build>节点下的<resources>配置,显式指定要包含.java文件:

<build>
    <resources>
        <resource>
            <!-- 指定资源目录 -->
            <directory>src/main/resources</directory>
            <!-- 包含该目录下的所有.java文件,同时保留原本的txt等资源 -->
            <includes>
                <include>**/*.java</include>
                <include>**/*.txt</include>
                <!-- 可以继续添加其他需要打包的资源格式 -->
            </includes>
        </resource>
        <!-- 如果还有其他资源目录(比如src/test/resources),也可以按需配置 -->
    </resources>
</build>

配置完成后,执行mvn clean package重新打包,你就能在Jar包的对应路径下找到原始的Test.java文件了。

补充说明

  • 这个配置只会影响src/main/resources目录下的.java文件,src/main/java目录下的.java依然会正常编译为.class文件,不会被当成资源打包。
  • 如果只想打包特定的某个.java文件,可以把<include>**/*.java</include>改成<include>path/to/your/Test.java</include>,精准指定文件路径。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 19:45:28