Сборка многомодульной библиотеки Maven

Я разрабатываю библиотеку с системой Maven, которая опубликована в репозитории Nexus. В нексусе (и в сборке maven тоже) проект выдает окончательный jar с именем <projectName>-<version>.jar — это именно то, что я хочу.

Теперь я решил разделить библиотеку на модули maven, и поэтому верхний уровень pom.xml имеет <packaging>pom</packaging>. Сборка также не производит окончательных <projectName>-<version>.jar, вместо этого она производит <moduleName>-<version>.jar для каждого модуля.

Чего я хочу добиться, так это разделить проект на модули и иметь возможность создавать окончательные <projectName>-<version>.jar, содержащие определенные модули. Это возможно? Можно ли решить эту проблему, перейдя на Gradle?


person Lukas Forst    schedule 21.05.2019    source источник


Ответы (1)


Когда вы решили разбить библиотеку на несколько модулей, это означает, что вы решили собрать их независимо. Поэтому ожидается, что каждый модуль создает свой собственный <moduleName>-<version>.jar.

Теперь, когда вы используете созданные модули как dependencies для более крупного модуля с объемом compile, maven автоматически добавит их в lib проекта.

Так что в вашем случае вам не нужно менять упаковку на pom и просто добавлять модули в качестве зависимости в файл pom.xml и позволить maven создать для вас окончательный jar.

Также, если вы хотите использовать упаковку pom, есть хороший вопрос здесь, который может помочь вам.

person Spara    schedule 21.05.2019