2016-09-28 171 views
0

我有一個多項目maven項目。 在我的pom根目錄中,我有一個父類pom和依賴關係管理,具有彈簧依賴關係。項目多項選擇中的父項目管理和依賴項管理

<?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.company.project</groupId> 
    <artifactId>artifactId</artifactId> 
    <version>${project-version}</version> 
    <packaging>pom</packaging> 

    <!-- Parent Pom --> 
    <parent> 
     <groupId>com.company.project</groupId> 
     <artifactId>parent_pom</artifactId> 
     <version>1.0.0</version> 
    </parent> 

    <modules> 
     <module>artifactId-war</module> 
    </modules> 

    <properties> 
     <project-version>1.0.0</project-version> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <spring.version>4.3.3.RELEASE</spring.version> 
    </properties> 

    <dependencyManagement> 
     <dependencies> 
       <dependency> 
       <groupId>org.springframework</groupId> 
       <artifactId>spring-framework-bom</artifactId> 
       <version>${spring.version}</version> 
       <type>pom</type> --> 
       <scope>import</scope> 
      </dependency> 

      .... 

在我的artifactId戰,我有這樣的pom.xml:

<?xml version="1.0"?> 
<project 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" 
    xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 

    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.company.project</groupId> 
    <artifactId>artifactId-war</artifactId> 
    <packaging>war</packaging> 

    <parent> 
     <groupId>com.company.project</groupId> 
     <artifactId>artifactId</artifactId> 
     <version>${project-version}</version> 
    </parent> 

    <dependencies>  
     <!-- Spring --> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-context-support</artifactId> 
     </dependency> 
... 

我的問題是,在父POM有一個春天的舊版本(4.1.8),並在我的根我使用4.3.3版本的神器spring-framework-bom。 在我的依賴列表中,proyect顯示parent_pom版本。我如何優先考慮我的pom根的依賴關係?

回答

0

你可以在artifactId-war pom中聲明正確的彈簧依賴。 Maven通過最短路徑贏家規則解決衝突。

如果您只想通過父pom進行全局控制,您可以在父項中定義一個屬性,但是您仍然必須在您的artifactId-war pom中聲明一個依賴項。

+0

我已經有這個,不是嗎? parent_pom有4.1.8版本,在root pom中我有de-artifact spring-framework-bom 4.3.3版本。爲什麼我的pom戰爭中沒有4.3.3版本? – oscar

+1

請勿使用依賴關係管理。直接在指定版本的arifactId-war pom中聲明它。 – Sefler

0

你的artifactId-war的pom.xml有一個錯誤。 在<parent>標記中,<groupId>應該是com.company.project而不是com.company.project.artifactId
有了這個,你不必在artifactId-war的pom.xml中特別提及spring jar版本(正如其他答案所建議的那樣)。它將繼承artifactId的pom.xml中的版本。
維護父pom的依賴版本始終是一種很好的做法,而不是在子pom級別維護版本。你的孩子pom應該只包含你想要的依賴關係的groupId和artifactId。它的版本將由父pom處理。

+0

這是一個錯誤的例子,抱歉。 – oscar

+0

當你說這是一個錯誤的例子時,你是什麼意思? –

+0

問題的代碼。我的實際代碼就像你說的那樣。我編輯了這個問題。抱歉。 – oscar