在玩了一下gradle后,我偶然发现了以下行为,我不确定这是否符合预期,或者我是否做错了。
默认情况下,我告诉编译配置transitive false
,我将抛弃所有传递依赖项。但是对于特定的依赖项我只想包含传递依赖项,所以我将transitive true
添加到依赖项声明中。
但是当它发生时,gradle会忽略我的覆盖。
这是否符合预期?我做错了吗?
以下是一个例子:
apply plugin: 'java'
repositories {
jcenter()
}
configurations {
compile {
transitive false
}
testCompile {
transitive false
}
}
dependencies {
testCompile('junit:junit:4.12') { transitive true }
}
:dependencies
------------------------------------------------------------
Root project
------------------------------------------------------------
testCompile - Compile classpath for source set 'test'.
\--- junit:junit:4.12
\--- org.hamcrest:hamcrest-core:1.3
BUILD SUCCESSFUL
Total time: 3.404 secs
:dependencies
------------------------------------------------------------
Root project
------------------------------------------------------------
testCompile - Compile classpath for source set 'test'.
\--- junit:junit:4.12
BUILD SUCCESSFUL
Total time: 3.352 secs
答案 0 :(得分:1)
我不知道你是否可以这样做,因为你已经宣布该配置以排除传递依赖。我看到的另一种模式是另一种方式,包括传递和依赖声明中的排除。
configurations {
compile {
transitive false
}
testCompile {
transitive false
}
}
dependencies {
testCompile('junit:junit:4.12') { exclude module: 'exclude.this' }
}
或更改配置以排除除所需内容之外的所有内容