У меня есть следующий упрощенный сценарий:
projectX ---> projectA ---> projectB
Где --->
означает «зависит от».
ProjectB действительно прост. Он не объявляет никаких зависимостей. Фактически, единственная важная часть такова:
<packaging>jar</packaging>
В pom.xml projectA я объявил зависимость от projectB:
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>com.mycompany</groupId>
<artifactId>projectB</artifactId>
<version>1.0.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
И в pom.xml projectX у меня есть:
<packaging>war</packaging>
<dependencies>
<dependency>
<groupId>com.mycompany</groupId>
<artifactId>projectA</artifactId>
<version>1.0.0</version>
<scope>compile</scope>
</dependency>
</dependencies>
Проблема в том, что projectX должен использовать компоненты (классы и т. Д.), Которые определены в projectB. Если я изменю область видимости в projectA, чтобы использовать compile
для projectB, все будет работать, но тогда projectB будет включен при генерации войны в projectX, и мне нужно, чтобы эта библиотека была вне созданной войны, потому что я предоставляю projectB в других часть проекта.
В реальном сценарии у меня есть несколько зависимостей, таких как projectB, которые влияют на projectA, поэтому, чтобы уменьшить размер сгенерированной войны, я хотел бы установить их как указано, но тогда projectX не может использовать компоненты, определенные в любой из этих библиотек. Пример компонентов: Spring, Hibernate и др.
Вопрос: есть ли способ добиться этого простым способом без повторного объявления зависимостей во многих местах?