Как скомпилировать зависимость в maven?

Сценарий:

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

B зависит от C (зависимости). В B pom я добавил

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

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

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

Ответы

Ответ 1

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

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

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

Ответ 2

Перечислите проекты 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>

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

Ответ 3

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

В приведенных выше ситуациях использование

mvn reactor:make -Dmake.folders=B 

построить B и C (и все зависимости B, если они есть).

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