У меня есть веб-приложение на Java EE, и для использования моего проекта с сервером приложений oc4j его необходимо исправлять в жизненном цикле сборки, чтобы избежать нескольких проблем.На самом деле я делаю это через maven-antrun-plugin
, который прекрасно работает.Я должен удалить, скопировать некоторые специальные библиотеки в WEB-INF/lib
и отредактировать web.xml
, чтобы избежать конфликтов с функциями EL и проблемами с загрузкой классов.
В соответствии с фазами жизненного цикла maven я выбралфаза prepare-package
: эта фаза выполняется до упаковки файла war
, но, к сожалению, также до того, как (пере) источники скопированы во временный рабочий каталог.Мне не нравится работать с исходными папками, потому что они находятся под контролем версий, и я не хочу, чтобы мои коллеги случайно фиксировали их, потому что инструмент сборки изменил их.
Поэтому maven копирует все-) исходные тексты для target/__finalName__
, где я хочу исправить проект для использования с oc4j.потому что эта папка временная и будет упакована в файл war.К сожалению, копирование и упаковка изолированы в жизненном цикле package
.
Так, как я могу получить между копированием источников и ресурсов и реальной упаковкой?
Пример с prepare-package
Этот пример не работаетпотому что ${project.build.directory}/${build.finalName}
не существует и ojdbc14.jar не был скопирован туда на этом этапе.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.4</version>
<executions>
<execution>
<id>patch-oc4j</id>
<phase>prepare-package</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<tasks>
<echo>Patching distribution for OC4J</echo>
<echo>Deleting the obsolete OJDBC library</echo>
<delete file="${project.build.directory}/${build.finalName}
/WEB-INF/lib/ojdbc14.jar" />
[... more patching ...]
</tasks>
</configuration>
</execution>
</executions>
</plugin>