Как собрать многомодульный проект в Maven - PullRequest
3 голосов
/ 14 февраля 2012

Я пытаюсь сделать многомодульный проект. У меня есть один модуль для JAR, содержащий модели, контроллер и классы обслуживания, и другой модуль для WAR. Мне удалось построить проект и сгенерировать результат, но я не уверен в структуре моих папок.

В настоящее время я создал один модуль Maven в том же проекте.

Папки:

Parent
Module1
Module2

Они все на одном уровне, это правильно? Или Module1 и Module2 должны быть внутри родительской папки? И возможно (или это произойдет автоматически), чтобы созданная цель появилась в родительской папке, а не в каждом модуле? Или, может быть, в этом нет необходимости.

Я использую IntelliJ 11 IDEA.

http://www.sonatype.com/books/mvnex-book/reference/multimodule-sect-intro.html

Ответы [ 2 ]

4 голосов
/ 14 февраля 2012

Обычно люди помещают модули под родительский (как логически, так и в структуре каталогов). Но это не закон. Это просто рекомендация. Теперь вам нужно создать 4 файла pom.xml: один на верхнем уровне и один на проект (родитель, module1 и module2). Помпа высшего уровня должна упомянуть все 3 своих подпроекта:

<modules>
    <module>parent</module>     
    <module>module1</module>
    <module>module2</module>        
</modules>

Если module1 и 2 зависят от родителя (то есть на одном уровне), просто скажите:

<dependencies>
    <dependency>
        <groupId>com.yourcompany.yourproject</groupId>
        <artifactId>parent</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>
<dependencies>
0 голосов
/ 15 февраля 2012

Вы можете поместить все модули и родительский элемент в одну иерархию.Хороший подход, который я нашел, - это иметь папку для родителя, в которой будет pom.В этом модуле вам необходимо определить подмодули:

<modules>
  <module>shared</module>
  <module>common</module>
  <module>dal</module>
  <module>logic</module>
</modules>

Если все модули в одной иерархии папок, то вам нужно сделать что-то вроде:

<module>../shared</module>

В подмодулях, вам нужно установить версию родителя:

<parent>
    <artifactId>Aggregation</artifactId>
    <groupId>com.mycomm</groupId>
    <version>3.0.2-SNAPSHOT</version>
</parent>

Чтобы иметь зависимость между каждым модулем в одном проекте:

<dependency>
    <groupId>com.mycomm</groupId>
    <artifactId>shared</artifactId>
    <version>${project.version}</version>
</dependency>

Если вы измените pom родителя, вам также понадобитсяизменить все подмодули родительский пом.Вы можете использовать mvn-release-plugin. Пример:

mvn release:update-versions -DautoVersionSubmodules=true -DdevelopmentVersion=1.0.0.2-SNAPSHOT
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...