2016-12-09 127 views
0

我在父宣佈POMMaven的依賴型= POM

<dependencyManagement> 
     <dependency> 
      <groupId>org.apache.commons</groupId> 
      <artifactId>commons-lang3</artifactId> 
      <version>${commons-lang3.version}</version> 
      <scope>compile</scope> 
     </dependency> 
</dependencyManagement> 

此外,孩子POM使用

<dependencies> 
     <dependency> 
      <groupId>org.apache.commons</groupId> 
      <artifactId>commons-lang3</artifactId> 
     </dependency> 
</dependencies> 

所有工作正常?但是當我使用這種依賴型= POM

<dependencyManagement> 
     <dependencies> 
      <dependency> 
       <groupId>org.jboss.spec</groupId> 
       <artifactId>jboss-javaee-7.0</artifactId> 
       <version>${jboss-javaee-7.0.version}</version> 
       <type>pom</type> 
       <scope>import</scope> 
      </dependency> 
</dependencyManagement> 

我有錯誤

[ERROR] The build could not read 1 project -> [Help 1] 
[ERROR] 
[ERROR] The project by.services:by.utils:1.0.2 (D:\Work\V2_Change_Maven_Structure\by.utils\pom.xml) has 1 error 
[ERROR]  'dependencies.dependency.version' for org.jboss.spec:jboss-javaee-7.0:jar is missing. @ line 18, column 21 
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. 
[ERROR] Re-run Maven using the -X switch to enable full debug logging. 

如何聲明依賴於dependencyManagement類型= POM $ {JBoss的JavaEE的-7.0.version}宣佈 如果我的根結的jboss-JavaEE的-7.0,然後運行

回答

1

澄清這裏的更多信息是,當你沒有在</dependencyManagement></dependency>定義<type>它defults到jar

<dependencyManagement> 
    <dependency> 
     <groupId>org.apache.commons</groupId> 
     <artifactId>commons-lang3</artifactId> 
     <version>${commons-lang3.version}</version> 
     <scope>compile</scope> 
     <type>jar<type> <!--default value--> 
    </dependency> 
</dependencyManagement> 

,因此module用途該罐子在使用時作爲

<dependency> 
    <groupId>org.apache.commons</groupId> 
    <artifactId>commons-lang3</artifactId> 
</dependency> 

type的依賴關係。默認爲jar。雖然通常 表示依賴項的文件名上的擴展名,但情況並非總是如此。一個類型可以映射到不同的擴展和分類器。該類型通常對應於所使用的包裝,但這並非總是如此。 一些例子是jarwarejb-clienttest-jar 新類型可以通過設置extensionstrue插件來定義,所以這不是一個完整的清單。


但下次,當你明確聲明父POM有作爲

<dependencyManagement> 
    <dependencies> 
     <dependency> 
      <groupId>org.jboss.spec</groupId> 
      <artifactId>jboss-javaee-7.0</artifactId> 
      <version>${jboss-javaee-7.0.version}</version> 
      <type>pom</type><!--override the default value--> 
      <scope>import</scope> 
     </dependency> 
</dependencyManagement> 

子模塊現在要麼可以繼承與依賴性類型相同<type>

<dependency> 
    <groupId>org.jboss.spec</groupId> 
    <artifactId>jboss-javaee-7.0</artifactId> 
    <type>pom</type><!--inherited--> 
</dependency> 

或者如果你想利用不同的<type>項目的罐子,你可以明確地離子依賴性爲:

<dependency> 
    <groupId>org.jboss.spec</groupId> 
    <artifactId>jboss-javaee-7.0</artifactId> 
    <version>${jboss-javaee-7.0.version}</version> 
    <type>jar</type> <!--different from parent--> 
    <scope>import</scope> 
</dependency> 
2

您正嘗試導入jboss-javaee-7.0罐中,你的孩子的項目,有沒有這樣的罐子,它的類型是POM的你已經在你爸進口出租。

您需要在您的子項目中導入jboss-javaee-7.0的依賴關係,例如。

<dependency> 
    <groupId>org.jboss.spec.javax.ws.rs</groupId> 
    <artifactId>jboss-jaxrs-api_2.0_spec</artifactId> 
</dependency> 

你可以得到約importing dependencies