У нас есть сборка Maven (версия 2.2.1), которая в настоящее время создает файл WAR. Наш выходной каталог - target/
, поэтому мы получаем артефакт сборки target/MyWar.WAR
.
Я добавляю два профиля в наш файл POM.xml, чтобы упростить определенные "варианты" сборки, для каждого из которых требуется определенная версия файла A.xml
. В промежуточном каталоге сборки target/MyWar/
есть 3 файла:
A.xml
A_1.xml
A_2.xml
Для сборки в Maven без указанного профиля следует использовать A.xml, и в настоящее время это так. Я хочу использовать maven-antrun-plugin
, чтобы (для профиля 1) заменить A.xml на A_1.xml, а для профиля 2 заменить A.xml на A_2.xml. (Удаление суффиксов _1 и _2.)
Это пример выполнения профиля 1:
<profile>
<id>Profile1</id>
<build>
...
<execution>
<id>Profile1-Replace</id>
<phase>package</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<tasks>
<delete
file="${project.build.outputDirectory}/../MyWar/A.xml" />
<copy
file="${project.build.outputDirectory}/../MyWar/A_1.xml"
tofile="${project.build.outputDirectory}/../MyWar/A.xml" />
</tasks>
</configuration>
</execution>
...
</build>
</profile>
Это правильно заменяет файлы в промежуточной целевой папке / MyWar /, но по какой-либо причине окончательная WAR, создаваемая в target
, не не отражает эти изменения.
Как будто запуск в фазе «пакета» слишком поздний, и WAR уже построен. Изменение фазы на «compile» или «test», непосредственно предшествующие фазы, жалуются на то, что файл A.xml (и промежуточный каталог сборки) еще даже не были созданы.