我在父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>
一切正常吗?但是当我使用type = 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.
如何使用type = pom在dependencyManagement中声明依赖项 $ {Jboss-javaee-7.0.version}宣布 如果我在root中承载jboss-javaee-7.0,则运行
答案 0 :(得分:5)
此处的说明是,如果您未在<type>
</dependency>
内定义</dependencyManagement>
,则会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
使用该jar作为
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>
依赖的
type
。默认为jar
。虽然它通常 表示依赖项文件名的扩展名,但并非总是如此。类型可以映射到不同的扩展和分类器。该类型通常对应于所使用的包装,但情况并非总是如此。 一些示例包括jar
,war
,ejb-client
和test-jar
可以通过将extensions
设置为true
的插件来定义新类型,因此这不是完整列表。
但接下来当您明确声明父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>
的项目的jar,你可以明确地提到依赖关系:
<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>
答案 1 :(得分:2)
您正在尝试在您的子项目中导入jboss-javaee-7.0
jar,没有这样的jar,它是您已经在父项中导入的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
的更多信息