2013-02-14 4 views
0

Я пытаюсь использовать полезную оверлейную функцию плагина maven-war. Другими словами, у меня есть шаблон (упакованный как WAR-файл, template-0.0.1.war), содержащий файлы тегов, css, js и изображения.maven-war-plugin overlay и m2e eclipse plugin

Когда я установил template-0.0.1.war как зависимость проекта MYAPP я получаю окончательный myApp.war, содержащий все файлы template-0.0.1.war перезаписаны теми, с тем же путем в проекте MYAPP.

Это поведение, которое я хочу.

Однако, мне нужно ввести в pom.xml из MYAPP конфигурацию Maven-войны-плагин:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-war-plugin</artifactId> 
    <version>2.3</version> 
    <configuration> 
     <webResources> 
     <resource> 
      <directory>../path/to/another/dir</directory> 
     </resource> 
     </webResources> 
    </configuration> 
</plugin> 

Как только я представляю такую ​​конфигурацию плагина, я могу получить окончательный myApp.war с все файлы из template-0.0.1.war и myApp проекта, но файлы template-0.0.1.war перезаписывают те же пути в проекте myApp.

Такое поведение совершенно противоположно тому, что я ожидаю.

Может ли кто-нибудь сказать мне, где я ошибаюсь?

Заранее спасибо. был найден

Edit после решения:

Описанная проблема связана с параллелизмом различных действий: ВОЙНА наложения (который работает правильно) и внешнего webResources.

Фактически внешний тег webResources указывает на каталог проекта шаблона: совершенно не полезный для Maven, но незаменим для «дурака» плагина m2e eclipse и позволяет ему видеть пользовательские теги, содержащиеся в шаблоне.

Решение я принял это ввести 2 различных профилей в разделе плагинов моего pom.xml: первый называется «затмение», в котором я вставил maven-war-plugin с webResources и второй профиль (так называемый "стандартный "и активируется по умолчанию) без maven-war-plugin.

ответ

0

От maven war plugin documentation:

По умолчанию, источник проекта (a.k.a текущей сборки) добавляют первый (например, перед нанесением любого наложения). Текущая сборка определяется как специальный оверлей без groupId, artifactId. Если сначала необходимо применить оверлеи, просто настройте текущую сборку после этих оверлеев.

Если у вас есть файлы в шаблоне, которые были перезаписаны файлами в WAR WAR, вы можете захотеть явно исключить их в конфигурации наложения.

Вот что документация говорит применять наложение первого:

<build> 
<plugins> 
    <plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-war-plugin</artifactId> 
    <version>2.3</version> 
    <configuration> 
     <overlays> 
     <overlay> 
      <groupId>com.example.projects</groupId> 
      <artifactId>my-webapp</artifactId> 
     </overlay> 
     <overlay> 
      <!-- empty groupId/artifactId represents the current build --> 
     </overlay> 
     </overlays> 
    </configuration> 
    </plugin> 
</plugins> 

+0

Большое спасибо за быстрый ответ, но это не решает проблему (см правку в моем посте). Только вчера я понял, что проблема связана с различными действиями, которые переопределяют друг друга. Это моя вина, что я не предоставил полную информацию. Сожалею. – baronKarza