maven - Gradle 通过分类器改变依赖关系

标签 maven gradle

你好,我得到了像这样的 Maven 文件

<dependency>
        <groupId>org.apache.zookeeper</groupId>
        <artifactId>zookeeper</artifactId>
        <version>${zookeeper.version}</version>
        <exclusions>
            <!-- Dependency on log4j will be removed in subsequent versions
                 see https://issues.apache.org/jira/browse/ZOOKEEPER-850 -->
            <exclusion>
                <artifactId>slf4j-log4j12</artifactId>
                <groupId>org.slf4j</groupId>
            </exclusion>
            <exclusion>
                <artifactId>log4j</artifactId>
                <groupId>log4j</groupId>
            </exclusion>
        </exclusions>
    </dependency>
    <!-- TEST -->
    <dependency>
        <groupId>org.apache.zookeeper</groupId>
        <artifactId>zookeeper</artifactId>
        <!-- There is no current version of zookeeper-test jar -->
        <version>3.4.3</version>
        <scope>test</scope>
        <classifier>tests</classifier>
        <exclusions>
            <!-- only needed for log4j -->
            <exclusion>
                <groupId>com.sun.jmx</groupId>
                <artifactId>jmxri</artifactId>
            </exclusion>
            <exclusion>
                <groupId>com.sun.jdmk</groupId>
                <artifactId>jmxtools</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

我想在 Gradle 上做同样的事情

 compile(group: 'org.apache.zookeeper', name: 'zookeeper', version: '3.4.5') {
    exclude(group: 'org.slf4j', module: 'slf4j-log4j12')
    exclude(group: 'log4j', module: 'log4j')
}
testCompile(group: 'org.apache.zookeeper', name: 'zookeeper', version: '3.4.3', classifier: 'tests') {
    exclude(module: 'jmxri')
    exclude(module: 'jmxtools')
}

但是 Gradle 仍然尝试采用最新版本,因此我在尝试运行测试时遇到错误。 知道在 Gradle 中这是如何完成的吗?

最佳答案

Gradle 在每个模块的基础上执行冲突解决,但分类器仅影响 Artifact ,而不影响模块。 (换句话说,zookeeper-tests 没有自己的 POM。)一种解决方案是切换到 zookeeper-3.4.3(除了 zookeeper -3.4.3-tests) 用于测试类路径。或者,如果您有二进制存储库管理器,则可以更改两个依赖项之一的组或 Artifact ID。

关于maven - Gradle 通过分类器改变依赖关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17230989/

相关文章:

android - gradle构建不包含aar android库

gradle - 如何在构建期间排除gradle任务或方法

maven - 在 Jersey 从 1.9 升级到 Jackson 2.0 不起作用

java - 如何使用 webdriver 和 java 查找日历表中的链接?

java - Spring无法通过配置文件选择 Autowiring 实现

Gradle HttpFileServer,继续运行,但在 ctrl+c 时终止

在自定义任务中使用 'configurations.runtime.asPath' 时,Gradle war 忽略传递依赖关系

maven - 使用gradle将jar上传到JFrog Artifactory

java - checkin mvn 版本时出现 "Exception in thread "main"java.lang.UnsupportedClassVersionError : Bad version number in . class file"错误

android - 将 SonarQube 与 android 项目集成的问题