2016-12-09 103 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