мультимодульный проект с Maven не работает, как ожидалось? - PullRequest
1 голос
/ 25 сентября 2010

Привет Я пытаюсь создать мультимодульный проект в Eclipse с помощью m2eclipse. Я следовал некоторым учебникам, но то, как это работает, не то, что я ожидал:

Вот структура моего проекта

  -Root
  -    webapps
  -          module1
  -          module2

У меня есть pom.xml для Root и модулей. (модули 1 и 2 независимы друг от друга) В pom.xml (Root) у меня есть

 <modules>
        <module>./webapps/module1</module>
        <module>./webapps/module2</module>
 </modules>

В pom.xml модуля 1:

<parent>
        <groupId>{RootGroupId}</groupId>
        <artifactId>{RootArtifactId}</artifactId>
        <version>{RootVersionId}</version>
        <relativePath>../../pom.xml</relativePath>
    </parent>

В модуле 2 он аналогичен модулю 1.

Когда я захожу в Root и запускаю pom-файл, он сначала запускает фазы Root, а затем фазы модуля (строит корневой проект, а также строит проекты модуля). Для меня это хорошо.

Но проблема возникает, когда я захожу в module1 и запускаю pom.xml. Затем это также делает то же самое: запускает Root pom.xml и module1's pom.xml. мне не нравится это What i want to be happened is ONLY the module1's pom file is triggered (ТОЛЬКО модуль1 собран), pom root не будет запущен (корневой проект не будет построен).

Любая помощь, пожалуйста.

1 Ответ

2 голосов
/ 25 сентября 2010

Обновление: Если вы не хотите, чтобы конфигурация плагина применялась в POM, которые наследуются от POM, в котором она объявлена, установите inherited на false.

  <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>properties-maven-plugin</artifactId>
    <version>1.0-alpha-1</version>
    <inherited>false</inherited> <!-- THIS SHOULD DO IT -->
    <executions>
      <execution>
        <id>read-project-properties</id>
        <phase>initialize</phase>
        <goals>
          <goal>read-project-properties</goal>
        </goals>
        <configuration>
          <files>
            <file>build.properties</file>
          </files>
        </configuration>
      </execution>
    </executions>
  </plugin>

Ссылка


Я пытался воспроизвести проблему ... но безуспешно.Я создал похожую структуру проекта:

$ tree .
.
├── pom.xml
└── webapps
    ├── module1
    │   ├── pom.xml
    │   └── src
    │       └── main
    │           └── webapp
    │               ├── index.jsp
    │               └── WEB-INF
    │                   └── web.xml
    └── module2
        ├── pom.xml
        └── src
            └── main
                ├── resources
                └── webapp
                    ├── index.jsp
                    └── WEB-INF
                        └── web.xml

Где родительский pom.xml объявляет:

  <modules>
    <module>webapps/module1</module>
    <module>webapps/module2</module>
  </modules>

И каждый дочерний элемент:

  <parent>
    <artifactId>Q3790987</artifactId>
    <groupId>com.stackoverflow</groupId>
    <version>1.0-SNAPSHOT</version>
    <relativePath>../../pom.xml</relativePath>
  </parent>

Сборка из корнязапускает сборку реактора:

$ mvn install
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Build Order:
[INFO] 
[INFO] Q3790987
[INFO] module1 Maven Webapp
[INFO] module2 Maven Webapp
[INFO] 
[INFO] ------------------------------------------------------------------------
...

Но создание потомка ничего не вызывает у родителя:

$ cd webapps/module1/
$ mvn install
[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building module1 Maven Webapp 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
...

Все работает, как и ожидалось.


(первоначальный ответ удален, как оказалось, я неправильно истолковал вопрос)

...