2009-11-14 6 views
6

Я использую Maven 2.0.9 для создания проекта с несколькими модулями. Я определил плагин сборки в моем родительском pom. Я могу собрать свои сборки, используяПроект с несколькими модулями - сборка плагина

mvn install assembly:assembly 

Эта команда запускает тесты дважды, один раз во время фазы установки и другой во время сборки. Я попробовал сборку: сингл, но он выдает ошибку. Любая помощь, чтобы собрать мои сборки, не запуская тесты дважды, очень ценится.

+0

Пожалуйста, сообщите об ошибке. Без этого трудно сказать что-либо. –

ответ

7

Вызов сборки mojo заставит Maven построить проект с использованием обычного жизненного цикла, вплоть до фазы package. Таким образом, при запуске:

mvn install assembly:assembly 

вы на самом деле говорите Maven, чтобы запустить несколько вещей в два раза, и это включает в себя фазу теста, как вы можете видеть в documentation жизненного цикла по умолчанию.

Чтобы избежать этого, следует запускать только:

mvn assembly:assembly 

Или связать плагин на построения жизненного цикла проекта:

<project> 
    ... 
    <build> 
    ... 
    <plugins> 
     <plugin> 
     <artifactId>maven-assembly-plugin</artifactId> 
     <configuration> 
      ... 
     </configuration> 
     <executions> 
      <execution> 
      <id>make-assembly</id> <!-- this is used for inheritance merges --> 
      <phase>package</phase> <!-- append to the packaging phase. --> 
      <goals> 
       <goal>single</goal> <!-- goals == mojos --> 
      </goals> 
      </execution> 
     </executions> 
     </plugin> 
     ... 
</project> 
+0

Эй, Паскаль Тивент: Ваш ответ помог мне разобраться в различиях между сборкой mvn: сборка и сборка mvn: сборка. Можете ли вы мне помочь разобраться в различиях между сборкой mvn: сборка и сборка mvn: сборка? – Patricia

1

Я думаю, что сообщение об ошибке вводит в заблуждение, это предполагает, что вам нужно запустить фазу «пакета» в том же самом вызове maven, что и сам вызов плагина сборки.

Вы попробовали сборку «mvn package assembly: assembly» или «mvn install assembly: assembly»?

Работает для меня под Linux, JDK 1.6.0_16, Maven 2.2.1, Assembly Plugin 2.2-beta-4.

+0

Предлагаемый выше фрагмент POM (привязка монтажного плагина к фазе ackage) должен работать одинаково, просто имейте в виду, что тогда вам не нужно явно ссылаться на плагин сборки в командной строке. «Mvn-пакет» (или «mvn install») автоматически создаст сборку. Не уверен, что я когда-либо использовал плагин сборки. Обычно я вызываю его явно, потому что часто меня не интересует сборка. – JavaGuy

+0

Я связал сборку плагина для установки или установки фазы, установки mvn или mvn. По-прежнему такая же ошибка. Это происходит только в проекте с несколькими модулями. – user209947

1

Вам необходимо создать отдельный проект для сборки в многомодульном проекте. Этот отдельный модуль будет только собирать - и он будет иметь зависимости: братья и сестры, которые должны быть добавлены в сборку результатов.

Пожалуйста, прочитайте эту статью: http://www.sonatype.com/books/mvnref-book/reference/assemblies-sect-best-practices.html

Смежные вопросы