Maven依赖管理和IDE:“导入”范围

dds

我有几个多模块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中正常运行?

dds

我终于解决了,问题是由于该dependencyManagement部分位于my-3rd-party-depsPOM中的配置文件中不好意思,我没有在问题中提到它。

因此,IDE不会将选择的配置文件传播到仓库中的已发布工件(如my-3rd-party-deps)。

解决方案是创建单独的POM(例如my-3rd-party-deps-jbossmy-3rd-party-deps-wildfly),然后在dependencyManagement每个父项目的配置文件部分中导入适当的POM

现在它可以正常工作了。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章