加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 是否可以在同一个pom.xml中重新定义导入的Maven依赖项?

发布时间:2020-12-15 02:11:06 所属栏目:Java 来源:网络整理
导读:我正在应用程序服务器环境中工作,我正在使用bom来收集依赖项信息,如下所示: dependency groupIdorg.jboss.bom.eap/groupId artifactIdjboss-javaee-6.0-with-security/artifactId version${jboss.bom.version}/version typepom/type scopeimport/scope /dep
我正在应用程序服务器环境中工作,我正在使用bom来收集依赖项信息,如下所示:

<dependency>
            <groupId>org.jboss.bom.eap</groupId>
            <artifactId>jboss-javaee-6.0-with-security</artifactId>
            <version>${jboss.bom.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>

但是,这个特定的bom将依赖项指定为“编译”,我希望将所有项目的作用域设置为“已提供”.但是,当我尝试覆盖同一个pom中的范围时,我将导入依赖关系,如下所示:

<dependency>
            <groupId>org.picketlink</groupId>
            <artifactId>picketlink-federation</artifactId>
            <scope>provided</scope>
        </dependency>

Maven抱怨它找不到版本,或者如果我使用bom中指定的version属性,则无法找到该属性.

我很确定这是同一个pom中导入覆盖的问题,因为我可以在子项目中覆盖范围就好了.有没有办法在一个pom中导入和覆盖范围?

*上面的所有代码段都来自同一部分.

解决方法

这肯定是可行的:

<dependencyManagement>
   ...
   <dependency>
     <groupId>org.jboss.bom.eap</groupId>
     <artifactId>jboss-javaee-6.0-with-security</artifactId>
     <version>${jboss.bom.version}</version>
     <type>pom</type>
     <scope>import</scope>
   </dependency>
   ...
</dependencyManagement>
<dependencies>
   ...
   <dependency>
     <groupId>org.picketlink</groupId>
     <artifactId>picketlink-federation</artifactId>
     <scope>provided</scope>
   </dependency>
</dependencies>

请记住,您需要在< dependencies>中重新定义范围,而不是在< dependencyManagement>中重新定义范围.部分.

如果使用继承,则范围覆盖当然会传播到任何子POM.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读