Maven создает WAR-файл, но сначала создает JAR-файл - PullRequest
1 голос
/ 20 апреля 2011

У меня есть два проекта Maven в Eclipse, оба с собственным POM.

Проект A создает файл JAR.

Проект B создает файл WAR.

Когда я запускаю команду «package» для проекта B, я хотел бы, чтобы она также упаковывала проект A, а затем копировала полученный JAR-файл в произвольное место в проекте B.

У меня естьпопробовал (и преуспел) в копии, используя значение webResources в плагине maven-war, например так:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-war-plugin</artifactId>
  <version>2.0.2</version>
  <configuration>
    <webResources> 
      <resource> 
        <directory>../ProjectA/target</directory> 
        <targetPath>.</targetPath>
        <includes>
          <include>ProjectA*.jar</include>
        </includes>
        <excludes>
          <exclude>*shaded*.jar</exclude>
        </excludes>
      </resource> 
   </webResources> 

Но как я могу получить POM для проекта B, чтобы выполнить сборку проекта A?

Альтернативный подход, который я пробовал, состоял в том, чтобы сделать проект A зависимым от проекта B, чтобы он был импортирован в каталог WEB-INF / lib WAR-файла, а затем перемещен в другое место.Но это кажется немного грязным.

Любая помощь, с благодарностью.

1 Ответ

6 голосов
/ 20 апреля 2011

Для этого вы должны создать многомодульную сборку с такой структурой.

  root
   +-- pom.xml
   +-- ProjectA
          +-- pom.xml
   +-- ProjectB
          +-- pom.xml

Со структурой, подобной приведенной выше, вы можете справиться со своей задачей очень элегантно. Кроме того, читайте о многомодульных сборках и т. Д. Одно дело - использовать более современную версию maven-war-plugin , потому что текущая версия 2.1.1, а не 2.0.X.

...