Как скомпилировать зависимость в 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, если они есть).
Надеюсь, что это поможет.