当前位置: 首页 > 知识库问答 >
问题:

如何在Gradle中编写此Maven排除代码?

印瑾瑜
2023-03-14

我试图在Spring Boot项目中使用最新(主)版本的Betamax,我得到了错误<code>SLF4J:检测到log4j-over-SLF4J。jar和slf4j-log4j12.jar在类路径上,抢占StackOverflowerError。。

所以我看了这个问题的最上面的答案,它说通过这样做来排除冲突依赖:

<exclusions>
  <exclusion> 
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
  </exclusion>
  <exclusion> 
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
  </exclusion>
</exclusions> 

但是我的项目使用 Gradle,所以我必须将其转换为 Gradle,我真的不知道我在做什么。我看了这篇文章,并试图搞砸它,就像

dependencies {
    ...
    compile('org.slf4j') {
        exclude module: 'slf4j-log4j12'
    }
}

但似乎没有什么效果。有人能帮我找出正确的语法吗?我真的很感激任何帮助。

如果有帮助的话,我的依赖项块当前看起来像这样:

dependencies {
    testCompile 'org.springframework.boot:spring-boot-starter-test:1.2.1.RELEASE'
    testCompile 'org.codehaus.groovy:groovy-all:2.3.3'
    testCompile 'co.freeside.betamax:betamax-proxy:2.0-SNAPSHOT'
    testCompile 'co.freeside.betamax:betamax-junit:2.0-SNAPSHOT'
    compile 'org.springframework.boot:spring-boot-starter-log4j2:1.2.1.RELEASE'
    compile 'org.springframework.boot:spring-boot-starter-web:1.2.1.RELEASE'
    compile 'org.springframework.boot:spring-boot-starter-data-jpa:1.2.1.RELEASE'
    compile 'org.springframework.boot:spring-boot-starter-tomcat:1.2.1.RELEASE'
    compile 'org.apache.tomcat.embed:tomcat-embed-jasper'
    compile 'com.domingosuarez.boot:spring-boot-starter-jade4j:0.2'
    compile 'com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.4.0'
    compile 'com.mashape.unirest:unirest-java:1.4.5'
    runtime 'mysql:mysql-connector-java:5.1.34'
    runtime 'net.kencochrane.raven:raven-log4j2:6.0.0'
}

共有2个答案

傅长恨
2023-03-14

正确的语法是:

dependencies {
    compile("org.gradle.test.excludes:api:1.0") {
        exclude group: "org.springframework", module: "spring-core"
    }
}

其中:

  • 组织.gradle.test.excludes:api:1.0 是一个组 Id:工件 Id:version
  • 组: “组织Spring框架”, 模块: “Spring芯” 是一个组: 组 Id, 模块: 工件 Id
国兴贤
2023-03-14

谢谢你们的帮助,伙计们。我能够按照Don Bottstein的建议修复错误,并这样做:

testCompile('co.freeside.betamax:betamax-proxy:2.0-SNAPSHOT') {
    exclude module: 'slf4j-log4j12'
}
testCompile('co.freeside.betamax:betamax-junit:2.0-SNAPSHOT') {
    exclude module: 'slf4j-log4j12'
}
 类似资料:
  • 二进制搜索的想法在排序数组的情况下完美地工作。我们可以对进行排序,对于每个值,搜索数组中是否存在另一个值。二进制搜索在中执行搜索,这可以帮助我们提高时间复杂度。 解决方案步骤 对数组按递增顺序排序对于每个元素,使用二分查找。如果数组A中存在值,则返回true。如果在整个数组中没有找到这样的对,则返回false。 伪代码"' ''' 这个伪代码只针对一个数组,如果我想检查两个未排序的数组中的对,以及

  • 依赖关系:树是: 有人能帮我解除对验证api: jar: 1.0.0. GA的依赖吗?它似乎在wc pom中作为传递依赖。谢谢

  • 了解如何在“代码”视图中工作并充分利用 Dreamweaver 的编码功能。 可通过多种方式在 Dreamweaver 中处理代码。 您可以使用“新建文档”对话框打开新的代码文件,然后开始键入您的代码。在 Dreamweaver 中创建新的代码文件 键入时,会显示代码提示以帮助您选择代码和避免打字错误。如果需要,可使用 Dreamweaver 的有用的快捷文档获取 CSS 的相关帮助。 还可以使用

  • 我正在尝试使用Android Studio 1.3.1使用实验性的gradle语法编译NDK项目。 我的< code>build.gradle看起来非常像茶壶示例中的那个 除了我的源代码树有一些我不想包含在构建中的文件。我无法删除这些文件,所以我需要gradle忽略它们。 我尝试添加一个< code>exclude定义: 但这并不影响结果。Gradle 仍在尝试编译此文件。 我尝试,=,排除,什么

  • 问题内容: 我有一个项目,需要以下Maven jibx插件: 在jibx插件pom内部,有一个xpp3依赖关系,我想从我的项目构建过程中排除它(由于某种原因,我无法在私有存储库中拥有它)。 有没有一种方法可以配置我的pom.xml(而不是插件pom)来排除该依赖关系? 编辑:我试图从插件pom中删除xpp3依赖项,并且该项目可以成功构建,所以我知道依赖项不是强制性的。 问题答案: 这是一个示例,其

  • 我在一个项目中使用了,该项目是用文件作为影子JAR构建的(即,这些文件包含在JAR中,而不仅仅是一个依赖项。 问题是,2.10.0现在已经存在已知的安全问题,但没有更新版本的spring库带有补丁的jackson文件。所以,我需要做的是使用现有的spring图书馆,但更新的jackson图书馆。如果它是一个正常的依赖关系,这将是足够容易的,但显然文件不能从spring库中删除。 因此,有什么方法可