2015-05-04 3 views
1

У меня есть проект с несколькими модулями maven с A в качестве родительского проекта. B и C являются модулями. Как я могу поделиться некоторыми зависимостями между B и C, если я не хочу, чтобы B и C наследовали от A? (Так что я не могу поставить эту зависимость в А от В и С, чтобы наследовать их)Совместное использование зависимостей между несколькими модулями Maven

Если у меня есть это:

<dependency> 
     <groupId>groupCommon</groupId> 
     <artifactId>IdCommon</artifactId> 
     <version>1.0</version> 
     <scope>compile</scope> 
    </dependency> 

Я хочу, чтобы эта зависимость будет использоваться в каждом модуле, но я не поместить его в каждый pom.xml. Итак, в основном, как я могу поделиться этой зависимостью между модулями B и C, не устанавливая эту зависимость в проекте A и не наследуя B и C от A?

+0

[Импорт зависимостей] (https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Importing_Dependencies) – SpaceTrucker

ответ

3

Если у вас есть несколько общих зависимости один вариант вы имеете, чтобы определить отдельные зависимости П, где можно определить все общие зависимости (в разделе <dependencies>, не Секции <dependencyManagement>), а затем определить этот POM как зависимость в ваши модули. Определяя эти общие зависимости pom как нормальную зависимость, все его зависимости включают в себя транзитивные зависимости ваших модулей.

Очевидно, вам все равно придется определять зависимость от этого пом в каждом модуле poms, но теперь это одна зависимость, а не множественная.

Так, например:

зависимостей POM

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
<modelVersion>4.0.0</modelVersion> 
<groupId>shared-dependencies-group</groupId> 
<artifactId>shared-dependencies</artifactId> 
<version>1.0</version> 
<name>Shared Dependencies</name> 
<dependencies> 
    <dependency> 
     <groupId>groupCommon</groupId> 
     <artifactId>IdCommon1</artifactId> 
     <version>1.0</version> 
     <scope>compile</scope> 
    </dependency> 
    <dependency> 
     <groupId>groupCommon</groupId> 
     <artifactId>IdCommon2</artifactId> 
     <version>1.0</version> 
     <scope>compile</scope> 
    </dependency> 
    <!-- more dependencies --> 
</dependencies> 

Модуль B пом

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
<modelVersion>4.0.0</modelVersion> 
<groupId>groupModules<groupId> 
<artifactId>module-b</artifactId> 
<name>Module B</name> 
<dependencies> 
    <!-- single dependency to the shared-dependencies pom instead of multiple dependencies --> 
    <dependency> 
     <groupId>shared-dependencies-group</groupId> 
     <artifactId>shared-dependencies</artifactId> 
     <version>1.0</version> 
     <scope>compile</scope> 
     <type>pom</type> 
    </dependency> 
</dependencies> 

То же самое было бы сделано в pom Module C.

Смежные вопросы