Я новичок в Maven и настраиваю свой первый проект maven. Я также создаю некоторые активы maven в виде некоторых помов, которые также могут быть унаследованы или использованы в качестве зависимостей в любых будущих проектах. Я хочу сгруппировать зависимости вместе и иметь возможность выборочно добавлять их в проект по мере необходимости.
Я прочитал эту статью о передовых методах работы с pom. Мне нравится идея группировать связанные зависимости вместе в poms, а затем добавлять pom в качестве зависимости к проекту по мере необходимости. Этот подход отлично подходит для компиляции зависимостей с ограниченной областью видимости. Однако он не работает для предоставленных зависимостей с ограниченной областью видимости, поскольку как транзитивные зависимости они опускаются.
Вот пример того, что я имею в виду: Допустим, я группирую веб-зависимости для своих проектов в файл pom.xml web-deps. К ним относятся компиляция
зависимостей фреймворка Spring в области видимости, а также предоставленный
javaee one:
4.0.0
com.xyz
mvn-web-deps
0.0.1-SNAPSHOT
pom
org.springframework
spring-web
${org.springframework.version}
org.springframework
spring-webmvc
${org.springframework.version}
javaee
javaee-api
${javaee.version}
provided
Затем я добавляю этот pom как зависимость в другой проект:
4.0.0
com.xyz
project-a
0.0.1-SNAPSHOT
com.xyz
mvn-web-deps
0.0.1-SNAPSHOT
pom
Зависимости в mvn-web-deps
теперь становится транзитивным . Поскольку указанная выше ссылка на зависимость имеет область видимости компиляции
, предоставленная транзитивная зависимость
опускается.
Я не хочу добавлять их в раздел dependency
родительского объекта поскольку может быть только один родительский элемент, и проекту могут потребоваться только некоторые из этих групп зависимостей, а не все. Я, возможно, смогу добавить их в раздел dependencyManagement
, но тогда мне придется повторно объявлять каждую зависимость (без версии) в каждом дочернем проекте.
Каков правильный / лучший способ группировки зависимостей, избегая при этом проблемы, как указано выше?