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

IntelliJ中Maven构建JAR未包含resources文件问题求助

解决方案:Maven构建可执行JAR时包含资源文件

针对你用Maven Profile构建服务端可执行JAR时,resources目录下的config/DBconfig.config未被打包进JAR的问题,以下是无需修改项目结构的解决方法:

1. 检查并修正Maven资源插件配置

首先确保Profile中正确配置了资源目录的包含规则,避免资源被过滤掉。在你的服务端Profile中添加如下配置:

<profile>
  <id>server</id>
  <build>
    <!-- 确保资源文件被复制到target/classes(你已确认这一步没问题,但需确保无排除规则) -->
    <resources>
      <resource>
        <directory>src/main/resources</directory>
        <includes>
          <include>**/*.config</include>
          <include>config/**</include>
        </includes>
      </resource>
    </resources>
    <!-- 后续打包插件配置 -->
  </build>
</profile>

2. 配置打包插件(Shade/Assembly)确保资源被包含

根据你使用的可执行JAR打包插件,添加对应的资源包含规则:

方案A:使用maven-shade-plugin(推荐)

如果用Shade插件打可执行JAR,在Profile的插件配置中明确包含资源文件:

<profile>
  <id>server</id>
  <build>
    <!-- 上述resources配置 -->
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <version>3.5.1</version>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>shade</goal>
            </goals>
            <configuration>
              <!-- 指定服务端主类全路径 -->
              <transformers>
                <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                  <mainClass>com.yourpackage.ServerMain</mainClass>
                </transformer>
              </transformers>
              <!-- 强制包含资源文件 -->
              <filters>
                <filter>
                  <artifact>*:*</artifact>
                  <includes>
                    <include>**/*.config</include>
                    <include>config/**</include>
                  </includes>
                </filter>
              </filters>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</profile>

方案B:使用maven-assembly-plugin

如果用Assembly插件,在配置中添加资源包含规则:

<profile>
  <id>server</id>
  <build>
    <!-- 上述resources配置 -->
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-assembly-plugin</artifactId>
        <version>3.6.0</version>
        <executions>
          <execution>
            <id>server-assembly</id>
            <phase>package</phase>
            <goals>
              <goal>single</goal>
            </goals>
            <configuration>
              <archive>
                <manifest>
                  <!-- 指定服务端主类全路径 -->
                  <mainClass>com.yourpackage.ServerMain</mainClass>
                </manifest>
              </archive>
              <descriptorRefs>
                <descriptorRef>jar-with-dependencies</descriptorRef>
              </descriptorRefs>
              <!-- 包含资源文件 -->
              <includes>
                <include>**/*.config</include>
                <include>config/**</include>
              </includes>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</profile>

3. 构建并验证

执行构建命令(指定服务端Profile):

mvn clean package -P server

构建完成后,用以下命令检查JAR中是否包含目标资源:

jar tf target/your-server-jar-name.jar | grep DBconfig.config

如果输出config/DBconfig.config,说明资源已成功打包,此时启动JAR即可正常读取配置文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 15:35:14