如何跳过 Maven 中特定文件的变量取消引用?

How to skip variable dereferencing in Maven for specific file?

我在 Jenkins 中有 Maven 项目,Jenkins 在 Windows Server 2012 上 运行。项目中有 init.script,我希望保持不变:

echo "export JAVA_HOME=${JAVA_HOME}" >> ${CMD_START}

问题是在成功构建后我在 init.script 文件中取消引用了 JAVA_HOME 变量:

echo "export JAVA_HOME=c:\Program Files\Java\jdk1.7.0_79" >> ${CMD_START}

我的问题是如何指示 Maven 忽略对该特定 init.script 文件取消引用的变量?也许我可以用 Jenkins 而不是 Maven 来做一些技巧?

我假设您配置了 Maven 来过滤您的资源(在 src/main/resources 中)。如果是这种情况,请像这样排除初始化脚本:

<resources>
  <resource>
    <directory>src/main/resources</directory>
    <filtering>true</filtering>
    <excludes>
      <exclude>path/to/init.script</exclude>
    </excludes>
  </resource>
  <resource>
    <directory>src/main/resources</directory>
    <filtering>false</filtering>
    <includes>
      <include>path/to/init.script</include>
    </includes>
  </resource>
</resources>

原因在于 Maven 中的 Assembly 插件配置。我在 assembly.xml 中禁用了文件集的过滤,其中包含所有 .script 文件以解决 JAVA_HOME 变量取消引用:

   <fileSet>
        <includes>
            <include>*.script</include>
        </includes>
        <directory>server/</directory>
        <outputDirectory>server</outputDirectory>
        <lineEnding>unix</lineEnding>
        <filtered>false</filtered>
   </fileSet>

Assembly plugin filtering documentation