比如說,我有一個專案,它有三個層次--專案、組和模塊。我在每個層面上都有 pom.xml:在專案層面上,我有整個專案的依賴關系,在組層面上,我有組內共享的依賴關系,而模塊層面上有該組的特定依賴關系。我以這樣的方式組織pom檔案:project pom (is the parent of) group pom (is the parent of) module pom.
。project pom.xml
<groupId>com.example</groupId>>
<artifactId>project</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>/span>project</name>
<packaging>/span>pom</packaging>
<dependencyManagement>/span>
<dependencies>/span>
<dependency>>
<groupId>/span>org.framework1</groupId>/span>
<artifactId>depend1</artifactId>
<version>1.0</version>
</dependency>/span>
<dependency>>
<groupId>/span>org.framework2</groupId>/span>
<artifactId>depend2</artifactId>
<version>1.0</version>
</dependency>/span>
<dependency>>
<groupId>/span>org.framework3</groupId>/span>
<artifactId>depend3</artifactId>
<version>1.0</version>
</dependency>/span>
</dependencies>
</dependencyManagement>/span>
例如,我有一個group1,它需要有依賴性depend1和depend2,但沒有依賴性depend3。
group1 pom.xml
<parent>
<groupId>/span>com.example</groupId>
<artifactId>project</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>/span>
<groupId>com.example.project</groupId>
<artifactId>group1</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>/span>group1</name>/span>
<packaging>/span>pom</packaging>
<dependencies>/span>
<dependency>>
<groupId>/span>org.framework1</groupId>/span>
<artifactId>depend1</artifactId>
</dependency>/span>
<dependency>>
<groupId>/span>org.framework2</groupId>/span>
<artifactId>depend2</artifactId>
</dependency>/span>
<dependencies>
而在group1下,模塊1需要depend1和depend2。所以它將簡單地從group1 pom中繼承它,而不需要指定它們。
module1 pom.xml
<parent>
<groupId>/span>com.example.project</groupId>
<artifactId>group1</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>/span>
<groupId>com.example.project.group1</groupId>
<artifactId>module1</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>module1</name> /span>
但是對于模塊2,它只需要depend1而不需要depend2。我應該如何指定排除法?我試了幾種方法,但都不奏效。例如,我把group1的依賴放在dependencyManagement標簽里,但得到了一些maven錯誤,抱怨缺少版本。我還讓module1的pom繼承自project pom,而不是group1的pom,這似乎可行,但這有點破壞了預期的結構。有什么辦法能在保留專案結構的同時實作這種排除法(從maven的角度來看)?
module2 pom
<parent>
<groupId>/span>com.example.project</groupId>
<artifactId>group1</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>/span>
<groupId>com.example.project.group1</groupId>
<artifactId>module2</artifactId>
<version>0.0.1-SNAPSHOT</version>/span>
<name>module2</name>
//如何包括depend1但不包括depend2?
uj5u.com熱心網友回復:
宣告你的依賴關系如下:
project
- pom.xml ... <dependencyManagement>
- group1
- pom.xml ... <dependency>/span>depend1
- 模塊1
| - pom.xml ... <dependency>depend2; <dependency>depend1 inherited from group1
- 模塊2
- pom.xml ... no <dependency> declared; <dependency> depend1 inherited from group1
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/327628.html
標籤:
