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

Maven资源过滤生成重复version.properties的问题及优化问询

问题原因

你遇到的双文件现象是Maven资源处理逻辑导致的:

  • 你同时保留了默认的src/main/resources资源配置(默认关闭过滤),又单独添加了src/main/resources/versions的过滤配置。
  • 第一步:默认配置会把src/main/resources下所有文件(包括versions/version.properties)原封不动复制到target/classes/versions/,因为过滤关闭,${project.version}变量未被替换。
  • 第二步:单独的versions目录配置会把该目录下的version.properties经过滤替换后,直接输出到target/classes根目录(未指定targetPath时,默认输出到类根路径),最终出现两个位置的文件。
简洁解决方案

调整Maven资源配置,让默认资源处理排除versions目录,同时单独处理versions目录时指定输出到对应子目录,确保只生成一个替换后的文件:

<build>
  <!-- 资源处理配置 -->
  <resources>
    <!-- 处理除versions外的所有资源,关闭过滤 -->
    <resource>
      <directory>src/main/resources</directory>
      <filtering>false</filtering>
      <excludes>
        <exclude>versions/**</exclude>
      </excludes>
    </resource>
    <!-- 单独处理versions目录,开启变量过滤,输出到classes/versions子目录 -->
    <resource>
      <directory>src/main/resources/versions</directory>
      <filtering>true</filtering>
      <targetPath>versions</targetPath>
    </resource>
  </resources>
  <!-- 指定从pom.xml读取变量 -->
  <filters>
    <filter>pom.xml</filter>
  </filters>
</build>

执行mvn clean javafx:run后,只会在target/classes/versions/下生成替换后的version.properties,其他资源不受影响,也不会出现根目录的重复文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 22:12:44