2016-07-20 63 views
0

如何引用包含在pom.xml中的模塊?在pom包裝中引用模塊

pom.xml下面我將如何包括在此POM模塊,以便它可以在其他項目中引用爲使引用的:

<dependency> 
    <groupId>com.example</groupId> 
    <artifactId>parent</artifactId> 
    <version>1.0-SNAPSHOT</version> 
</dependency> 

的pom.xml

<?xml version="1.0" encoding="UTF-8"?> 
<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/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>com.example</groupId> 
    <artifactId>parent</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <packaging>pom</packaging> 

    <modules> 
     <module>module1</module> 
     <module>module2</module> 
     <module>module3</module> 
    </modules> 

    <dependencies> 
     <dependency> 
      <groupId>org.codehaus.jettison</groupId> 
      <artifactId>jettison</artifactId> 
      <version>1.3.3</version> 
     </dependency> 
    </dependencies> 

</project> 
+0

澄清:你想在另一個項目中使用項目的模塊作爲依賴項?這個項目是不是又一個模塊(也就是說,它們是相同的反應器)或者它是一個完全分離的項目? –

+0

它是一個完全獨立的項目。一切都發布到artifactory,所以artifactory有com.example:parent:1.0-SNAPSHOT&每個模塊。 – bdparrish

回答

0

我想你可以做的最好的事情就是把你的子模塊放在父POM的dependencyManagement部分中,像這樣:

<dependencyManagement> 
    <dependencies> 
     <dependency> 
      <groupId>com.example</groupId> 
      <artifactId>module1</artifactId> 
      <version>${project.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>com.example</groupId> 
      <artifactId>module2</artifactId> 
      <version>${project.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>com.example</groupId> 
      <artifactId>module3</artifactId> 
      <version>${project.version}</version> 
     </dependency> 
    <dependencies> 
</dependencyManagement> 

然後,您可以使用他們需要的任何依賴性來配置每個子模塊,而無需擔心正確的版本號。

<!-- module2's dependencies --> 
<dependencies> 
    <dependency> 
     <groupId>com.example</groupId> 
     <artifactId>module1</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>com.example</groupId> 
     <artifactId>module3</artifactId> 
    </dependency> 
<dependencies> 

如果您將所有子模塊聲明爲父POM的依賴關係,那麼您最終會得到循環依賴關係。例如:

[parent] -> [module1] -> [parent] 

Maven不喜歡那樣。