Как пропустить разыменование переменных в Maven для конкретного файла?

У меня есть проект Maven в Дженкинсе, Дженкинс работает на Windows Server 2012. В проекте есть init.script со следующей строкой, которую я хочу оставить без изменений:

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

Проблема в том, что после успешной сборки я получил разыменованную переменную JAVA_HOME внутри файла init.script:

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

Мой вопрос: как я могу дать Maven команду игнорировать разыменование переменных для этого конкретного файла init.script? Может быть, есть какой-то трюк, который я могу сделать с Дженкинсом вместо Мейвена?

2 ответа

Решение

Я предполагаю, что вы настроили 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.xml для набора файлов, который включает в себя все файлы.script для разрешения разыменования переменных JAVA_HOME:

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

Документация по фильтрации плагинов сборки

Другие вопросы по тегам