Это мой первый вопрос по StackOverflow.Изучил немного, читая другие вопросы и ответы.
Вопрос о мультимодуле Maven.
Ниже приведена структура моего проекта:
commons-parent
|--pom.xml
|--commons-module1
|--pom.xml
|--core
|--pom.xml
|--cli
|--pom.xml
cli обозначает интерфейс командной строки.
commons-module1 - это библиотека, которая будет использоваться различными проектами внутри компании.commons-module1 / core содержит pom, который упаковывает только библиотечные классы.commons-module1 / cli содержит pom, который упаковывает тестовые программы командной строки.
commons-parent / pom.xml (соответствующий фрагмент):
<groupId>com.abc.def</groupId>
<artifactId>commons-parent</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<profile>
<id>reactor</id>
<properties>
<env.type>dev</env.type>
</properties>
<modules>
<module>../commons-module1</module>
</modules>
</profile>
there is a distribution management section
but there is no repositories section in pom.
commons-module1 / pom.xml (соответствующий фрагмент):
<parent>
<groupId>com.abc.def</groupId>
<artifactId>commons-parent</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<groupId>com.abc.def</groupId>
<artifactId>commons-module1</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<modules>
<module>cli</module>
<module>core</module>
</modules>
there is a distribution management section
but there is no repositories section in pom.
commons-module1 / core / pom.xml (соответствующий фрагмент):
<parent>
<groupId>com.abc.def</groupId>
<artifactId>commons-module1</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<groupId>com.abc.def</groupId>
<artifactId>commons-module1-core</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
there is a distribution management section
but there is no repositories section in pom.
commons-module1 / cli / pom.xml (соответствующий фрагмент):
<parent>
<groupId>com.abc.def</groupId>
<artifactId>commons-module1</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<groupId>com.abc.def</groupId>
<artifactId>commons-module1-cli</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
there is a distribution management section
but there is no repositories section in pom.
Среда:
Apache Maven 2.1.0 (r755702; 2009-03-18 19:10:27+0000)
Java version: 1.6.0_25
Описание проблемы:
Когда проект должен зависеть от commons-module1-core, проект будет зависеть от maven в pom следующим образом:
<dependency>
<groupId>com.abc.def</groupId>
<artifactId>commons-module1-core</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
Thisработает только (т.е. удовлетворяются зависимости), когда все три иерархии commons-parent, commons-module1, commons-module1-core все три находятся в локальном хранилище.Это не сработает, если у меня пропадет какой-либо из них на местном уровне.У нас есть менеджер хранилища Nexus.Итак, я ожидал, что проект, использующий библиотеку commons-module1-core, может просто объявить приведенный выше фрагмент зависимости в их pom и через транзитивное разрешение зависимостей получить родительские poms.
Я что-то здесь упустил?
РЕДАКТИРОВАТЬ
Для более простого варианта использования, который, на мой взгляд, похож на мою проблему - см. Этот вопрос без ответа:
Ребенок не найденродительский пом в плоской структурированной мультимодульной сборке maven