Задать вопрос

Как собирать отдельные модули в многомодульном maven-проекте?

Подскажите пожалуйста, как лучше организовать многомодульный проект с возможностью сборки независимых модулей.
Возможно я некорректно изначально спланировал структуру такого проекта.. Это вполне возможно, т.к. я новичок и в maven, и вообще в разработке на Java.

Сейчас предполагается такая структура:
- general [parent]
	- src
		-main
			-java
				- JSON_Builder (класс для специфической компоновки JSON)
				- JSON_Parser (тоже что-то специфическое)
- module_1
	- src
		-main
			-java
				- некий класс, использующий JSON_Builder
- module_2
	- src
		-main
			-java
				- некий класс, использующий JSON_Parser


Стоит задача: в любой момент времени собрать функционал какого-то модуля (на жизненный цикл версий general-модуля можно не закладываться).
Целесообразно ли копировать зависимые классы в target/dependencies собираемого модуля в момент сборки?
Если есть под рукой ссылки на практики создания сложных проектов по зависимостям, буду очень признателен.
  • Вопрос задан
  • 7025 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
EugeneP2
@EugeneP2
Java Dev
  1. Как то еще не встречал, чтоб в паренте объявлялись какие то классы. Он предназначен для объединения модулей и определения общих настроек и зависимостей;
  2. Если вам нужен какой то общий для всех модуль, то создайте что то типа "core-module" и подключите его как зависимость к остальным модулям;
  3. Что бы модули друг друга видели для зависимости, сделайте в корне парента: mvn install;


вот можете посмотреть на пример многомодульного проекта
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Praytic
Создаешь pom.xml, которая будет у тебя главной, и она будет хранить ссылки на помки, которые у тебя будут в каждом модуле хранится, вот так:
<modules>
        <module>child1</module>
        <module>child2</module>
    </modules>

Затем создаешь для каждого модуля pom.xml, которая будет ссылаться на своего родителя:
<parent>
        <groupId>groupIdParent</groupId>
        <artifactId>artifactIdParent</artifactId>
        <version>1.0</version>
    </parent>
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы