我有几个多模块Maven项目。它是Java EE应用程序,因此它们最终都转到单个EAR文件中,这就是为什么有一个特殊的单独POM的原因,其中所有依赖项管理都针对第三方依赖项进行了描述:
<groupId>mygroup</groupId>
<artifactId>my-3rd-party-deps</artifactId>
<version>1.0.0</version>
<packaging>pom</packaging>
它还在依赖管理部分中导入了JBoss AS父POM:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.jboss.as</groupId>
<artifactId>jboss-as-parent</artifactId>
<version>7.1.3.Final</version>
<type>pom</type>
<scope>import</scope>
</dependency>
每个项目都有自己的父母,我在这里描述
<dependencyManagement>
<dependencies>
<dependency>
<groupId>mygroup</groupId>
<artifactId>my-3rd-party-deps</artifactId>
<version>1.0.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
每个子模块仅描述其依赖关系而没有版本。
当您使用命令行时,这完美地工作。所有依赖项版本均已正确解决。
但是在IDE中(我尝试过IDEA,Eclipse和NetBeans),我得到了错误。
主意
[ERROR] 'dependencies.dependency.version' for org.jboss.spec.javax.ejb:jboss-ejb-api_3.1_spec:jar is missing. @ line 63, column 29 less...
蚀
For artifact {org.jboss.spec.javax.ejb:jboss-ejb-api_3.1_spec:null:jar}: The version cannot be empty. (org.apache.maven.plugins:maven-resources-plugin:2.6:resources:default-resources:process-resources)
而版本org.jboss.spec.javax.ejb:jboss-ejb-api_3.1_spec
是在JBoss AS父POM中。
为什么会发生这种情况,我该如何解决这个问题以使其在IDE中正常运行?
我终于解决了,问题是由于该dependencyManagement
部分位于my-3rd-party-deps
POM中的配置文件中。不好意思,我没有在问题中提到它。
因此,IDE不会将选择的配置文件传播到仓库中的已发布工件(如my-3rd-party-deps
)。
解决方案是创建单独的POM(例如my-3rd-party-deps-jboss
和my-3rd-party-deps-wildfly
),然后在dependencyManagement
每个父项目的配置文件部分中导入适当的POM 。
现在它可以正常工作了。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句