Создавать группы зависимостей в Maven для повторного использования, включая 'предоставленные' зависимости

Я новичок в 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 , но тогда мне придется повторно объявлять каждую зависимость (без версии) в каждом дочернем проекте.

Каков правильный / лучший способ группировки зависимостей, избегая при этом проблемы, как указано выше?

8
задан Betlista 13 March 2013 в 14:09
поделиться