首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在maven中排除组中的所有工件?

如何在maven中排除组中的所有工件?
EN

Stack Overflow用户
提问于 2012-10-23 03:43:49
回答 3查看 35.1K关注 0票数 47

我使用的是maven 3,其中Enforcer插件配置为强制版本收敛。我使用的是Spring 3.1.2和Spring Security 3.1.3。

问题是Spring 3.1.3 POM声明了对Spring 3.0.7的依赖,因为这是spring安全性所需的最低版本。这意味着enforcer插件会抱怨,因为传递依赖图中同时包含Spring 3.1.2和Spring 3.0.7。

修复方法是显式地排除spring 3.0.7作为spring安全性的依赖项,以便enforcer插件在happy中。

下面的代码片段就是这么做的,它的问题是我不得不一遍又一遍地重复相同的代码片段,为每一个spring安全罐子,这是乏味的,并使pom难以阅读,有没有方法告诉maven一些东西。

对于依赖org.springframework.security,不管是什么artificatId都忽略了安全框架对spring框架的依赖?

代码语言:javascript
复制
<dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-acl</artifactId>
            <version>${spring.security.version}</version>
            <exclusions>
                <exclusion>
                    <artifactId>spring-tx</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>spring-asm</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>

                <exclusion>
                    <artifactId>spring-core</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>spring-aop</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>spring-beans</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>spring-jdbc</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>spring-expression</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>spring-context</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-web</artifactId>
            <version>${spring.security.version}</version>
            <exclusions>
                <exclusion>
                    <artifactId>spring-aop</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>spring-core</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>spring-expression</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>spring-beans</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>spring-context</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>aopalliance</artifactId>
                    <groupId>aopalliance</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>spring-web</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>spring-jdbc</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>spring-tx</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>
            </exclusions>
        </dependency>
EN

回答 3

Stack Overflow用户

发布于 2012-10-23 09:33:23

这可能对您没有太大帮助,但是有一个特性请求允许在排除中使用通配符,但是它不在Maven的当前发布版本(3.0.4)中。(编辑:此功能现在出现在Maven 3.2.1中)

https://issues.apache.org/jira/browse/MNG-3832

在这期JIRA中有一个有趣的评论:

不确定发生了什么,但这似乎可以在Maven3.0.3中工作,使用以下代码:

代码语言:javascript
复制
<exclusion>
    <groupId>*</groupId>
    <artifactId>*</artifactId>
</exclusion>

但是,这会产生以下警告:

警告my.groupid:my.artifactid:ejb- 'dependencies.dependency.exclusions.exclusion.groupId‘的值为'*’的客户端与有效的id模式不匹配。@第31行,第30列

警告my.groupid:my.artifactid:ejb- 'dependencies.dependency.exclusions.exclusion.artifactId‘的值为'*’的客户端与有效的id模式不匹配。@第32行,第33列

所以我可能不应该这么做,但它确实有效。

因此,您可以在Maven3.0.3或更高版本中使用artifactId通配符,并使其工作,但会出现警告,并且不能保证与更高版本的兼容性。

票数 31
EN

Stack Overflow用户

发布于 2016-05-18 19:12:21

这对我很有效,不包括groupId org.springframework的所有工件

代码语言:javascript
复制
<exclusions>
    <exclusion>
        <groupId>org.springframework</groupId>
        <artifactId>*</artifactId>
    </exclusion>
</exclusions>
票数 28
EN

Stack Overflow用户

发布于 2013-05-18 15:37:46

我遇到了同样的问题。我认为你应该在你的pom.xml中显式地包含Spring3.2.x,以便在Maven解决冲突jars时强制使用0级的Spring版本。请访问:http://www.baeldung.com/spring-security-with-maven

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13018625

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档