Может ли муравей заменить текст в файлах внутри jar / ear / war? - PullRequest
5 голосов
/ 04 ноября 2011

Я хочу создать свой файл ear один раз, а затем использовать ant для изменения некоторых настроек в application.xml, файлах свойств и т. Д.

Есть ли способ сделать это с муравьем?

[править] Только что нашел

Как мне изменить файл в jar-файле с помощью ANT?

Ответы [ 2 ]

4 голосов
/ 04 ноября 2011

Единственный способ изменить файл внутри фляги или уха - использовать задачу <unzip>, задачу <replace>, чтобы изменить поля в файле, а затем повторно заархивировать файл с помощью *.1003 * или <jar>/<ear> task.

Существует несколько способов справиться с этим без необходимости разархивировать и разархивировать файлы ear / jar / war:

  • ПредпочтительныйМетод заключается в настройке сервера приложений, чтобы он мог находить ваши свойства за пределами самого уха.Также можно настроить файл application.xml таким образом, чтобы он не использовал относительные каталоги при указании местоположений, а не указывал местоположения из корня машины.Удалив информацию о встроенной среде из своего уха, вы можете использовать один и тот же файл наушников во всех своих средах.

  • Мы, к сожалению, не можем выполнить вышеизложенное и должны предоставить отдельные файлы наушников длякаждая среда.Мы используем Jenkins в качестве нашего сервера непрерывной сборки.Когда Jenkins делает наши сборки, мы строим несколько ушей, по одному для каждой среды, одновременно.Таким образом, когда мы переходим от Dev к QA к STAGE к Production, мы можем по крайней мере ссылаться на тот же номер сборки.Мы компилируем один раз, затем используем задачу AntContrib <foreach> , чтобы получить файл наушников с правильными настройками файла свойств и правильным файлом application.xml.Мы используем <filterset> в нашей задаче <copy> для изменения свойств и application.xml при построении уха.

0 голосов
/ 10 апреля 2014

Вы можете сделать что-то вроде этого

<zip destfile="tmp.jar" >
  <zipfileset src="lib/myjar.jar" excludes="org/example/My*.class" />
  <zipfileset dir="bin" includes="org/example/My*.class"  />
</zip>
<move file="tmp.jar" tofile="lib/myjar.jar"/>

В этом примере мы создаем tmp.jar, используя myjar.jar в качестве источника, но исключая все классы, начинающиеся с My в каталоге org / example. Затем мы добавляем нашу новую версию из каталога bin. Затем мы заменяем файл jar нашей новой версией.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...