Как скомпилировать зависимость в Maven? - PullRequest
15 голосов
/ 07 февраля 2012

Сценарий:

У меня есть проект основного уровня A и внутри A, два дочерних проекта B и C, над которыми работали разные разработчики, но они согласовывают абстракцию через общие интерфейсы.

B зависит от C (зависимость). В помете Б я добавил

<dependency> .. details of project C..</dependency> .

При этом maven прекрасно вставляет зависимости, за исключением того, что проект C не перекомпилируется.

Я хочу, чтобы проект C автоматически перекомпилировался каждый раз, когда я компилирую B.

Ответы [ 3 ]

19 голосов
/ 07 февраля 2012

Если вы хотите собрать B и автоматически построить его зависимости, вы можете использовать расширенные опции реактора maven, такие как -also-make-dependents.

mvn clean install –-projects B –-also-make 

или короткий

mvn clean install -pl B -am

Это скомпилирует все подмодули A, от которых зависит B. В блоге sonatype есть полезный пост о продвинутых опциях реактора maven. http://www.sonatype.com/people/2009/10/maven-tips-and-tricks-advanced-reactor-options/

9 голосов
/ 07 февраля 2012

Перечислите проекты B и C как модули в pom проекта A. Теперь, когда вы создаете проект A, он должен строить проекты B и C автоматически и в правильном порядке.

<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
                             http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>multi</groupId>
    <artifactId>A</artifactId>
    <packaging>pom</packaging>
    <version>1.0</version>

    <modules>
        <module>B</module>
        <module>C</module>
    </modules>
</project>

См. this для примера многомодульного проекта maven.

0 голосов
/ 29 февраля 2012

Я часто использую плагин реактора Maven для решения подобных проблем.Этот плагин даже покрывает жесткие требования, которые может иметь сложный проект со множеством подмодулей в сложной структуре.См. link для примеров.

Для описанных выше ситуаций используйте

mvn reactor:make -Dmake.folders=B 

для построения B и C (и всех зависимостей B, если таковые имеются).

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...