我遇到了一个我一直无法解决的特殊问题,如果有任何帮助,我将不胜感激。最初,我在Java项目中包含了一些jar依赖项作为工件依赖项。它看起来如下所示:
compile "com.example:projectA:1.0.0@jar"
到目前为止还好。让我们把这个项目叫做'A'。我已经将项目A包含在另一个Java项目B中,同样是用Gradle。我注意到,当在B中使用一个带有maven-publish的published时,它在pom文件中并没有排除所有的传递依赖项。
所以我开始使用传递性标志:
dependency("com.example:projectA:1.0.0") {
transitive = false
}
这确保了在项目B中,我在使用eclipse插件和gradle本身时排除了A的所有传递DEP。
dependency("com.example:projectA:1.0.0") {
exclude group: '*'
}
根据maven文档,pom文件现在正确地包含了所需的传递依赖项排除规则:
<groupId>com.example</groupId>
<artifactId>projectA</artifactId>
<version>1.0.0</version>
<exclusions>
<exclusion>
<groupId>*</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
然而,这导致了一系列不同的问题;在使用compileJava任务时,eclipse和gradle本身都不能编译项目B中的任何代码,如果以这种方式包含A的话。随着它的传递依赖关系,A本身也消失了。
奇怪的是,根据dependencies任务,它是编译类路径的一部分。
import org.apache.commons.dbcp.BasicDataSource;
public class Main {
public static void main(String[] args) {
System.out.println("Hello World");
BasicDataSource ds = new BasicDataSource();
}
}
Build.Gradle:
version = '0.0.1'
group = 'com.example'
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'maven-publish'
repositories {
mavenCentral()
}
dependencies {
compile ('commons-dbcp:commons-dbcp:1.4')
{
transitive=false
}
// {
// exclude group: '*'
// }
}
publishing {
publications {
mavenJava(MavenPublication) {
from components.java
}
}
}
谢谢@Peter Ledbrook让我研究其他版本。似乎这个bug在Gradle2.4中已经被知道并修复了。3243级我想我挖得不够深。仍然有点令人烦恼的是,gradle发布说明2.3中的“已知问题”部分没有提到这个bug。
如前所述,一个简单的升级gradle应该可以做到这一点。
我试图用JUnit和SLF4J测试来测试记录器的行为,这是“SLF4J的一个测试实现,它将日志消息存储在内存中,并提供检索它们的方法”。 我有一些将SLF4J作为传递依赖项的依赖项。我试图将SLF4J从我的测试配置中的所有依赖项中排除,但我仍然需要它来进行SLF4J测试。 我可以通过下面的代码将SLF4J排除在所有内容之外,但这显然也将它排除在我需要的SLF4J测试之外。 由于SLF4J是我的许多
我试图从gradle构建中排除嵌套的传递依赖项。依赖结构看起来像 org.apache.beam:beam-sdks-java-core:2.33.0-自定义 我按照gradle exclude的公认解决方案排除了依赖性,但它对我不起作用。 这不排除依赖项。当我将其更改为时,依赖项仍然没有被排除。 关于如何排除这种依赖关系的任何建议?它在旧版本中拉动。
问题内容: 我的gradle项目使用该插件构建了一个jar文件。作为运行时传递依赖项的一部分,我最后引入。(在至少5或6个其他可传递依赖项中被称为子传递依赖项-该项目正在使用spring和hadoop,因此除了厨房水槽之外的所有东西都被拉进来了…等一下…那里也是:) )。 我想从我的内置jar中全局排除该jar。所以我尝试了这个: 但是,这似乎排除了所有 org.slf4j工件,包括slf4j-a
我有三个分级模块:ModA模块、ModB模块和ModC模块 ModA依赖于ModB和Spring Web MVC 3.2.6 ModC依赖于Spring Web MVC 4.1.5 我得到了相当多的错误,因为ModA拉进来,使用的是Spring4.1.5而不是3.2.6。由于版本差异和时间,我现在无法将ModA更新到Spring4.1.5。我想做的是将Spring4.1.5从ModA Gradle
一些stackoverflow帖子暗示我的类路径中有spring-asm的冲突版本。通过gradle依赖分析,我看到我没有spring-asm的多个版本,但我有spring-core的多个版本(版本3.1.4和5.0.2) 我试图排除3.1.4版本,但无法使其工作。我试图在依赖级别和配置级别都排除它。 即使有了上述更改,我仍然在依赖分析输出中发现Spring-Core:3.1.4.Release。
关于maven和传递依赖排除有几个问题。然而,我不能让它工作。我的pom中有一些依赖项,它们重新打包了一些库,以减小pom的大小。到目前为止,这是成功的。但是当我运行时,这些可传递的依赖项会被写入。类路径文件。尽管它们被排除在外,如以下摘录所示。 Apache Maven 3.3.3(7994120775791599e205a5524ec3e0dfe41d4a06;2015-04-22T13:57