Какую фазу жизненного цикла maven2 выбрать? - PullRequest
2 голосов
/ 12 июля 2010

У меня есть веб-приложение на 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>

Ответы [ 2 ]

1 голос
/ 13 июля 2010

Не могли бы вы использовать профиль для этого? Может быть, что-то вроде этого:

<profiles>
  <profile>
    <id>oc4j</id>
    <dependencies>
      <dependency>
        <groupId>com.oracle</groupId>
        <artifactId>ojdbc14</artifactId>
        <version>10.2.0.4.0</version>
        <scope>provided</scope>
      </dependency>
    </dependencies>
  </profile>
</profiles>
0 голосов
/ 13 июля 2010

Мне нужно удалить, скопировать некоторые специальные библиотеки в WEB-INF / lib и отредактировать файл web.xml, чтобы избежать конфликтов с функциями EL и проблем с загрузкой классов.

Звучит так, как будто вы могли бы, по крайней мере частично, сделать это с помощью Build Profiles . Вместо этого ... Ваша мотивация для вышеуказанной проблемы немного коротка, но если вы уточните, мы сможем судить об этом лучше ...

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