我想使用my plugin对nebula-test进行回归测试。我的插件是用Groovy编写的,但它很简单,使用Gradle 1.x构建时可以在Gradle 2.x的项目中使用。目前,由于Gradle和Groovy conflicts on classpath,我只能使用Gradle 1.x自动测试它(从Gradle 2.x运行时,有Gradle 1.x和2.x以及Groovy 1.8.6和2.3 .6依赖)。作为一种解决方法,我想在类路径上只设置我的插件的运行时依赖项(不包括gradleApi
和localGroovy
提供的JAR),我需要在为我的插件运行Gradle构建脚本时生成该列表(当测试运行时,确定包含给定JAR的内容为时已晚。
我如何以编程方式(例如build.gradle中的任务)生成运行时依赖项列表(事实上JAR由它们+ build / class / main和build / resources / main添加到类路径中)没有来自gradleApi
和localGroovy
?
答案 0 :(得分:1)
听起来你想要这样的东西:
configurations {
gradleDeps
}
dependencies {
gradleDeps gradleApi() // includes localGroovy
compile configurations.gradleDeps
compile ...
runtime ...
}
def runtimeWithoutGradleDeps = configurations.runtime - configurations.gradleDeps
task printFiles {
doLast {
runtimeWithoutGradleDeps.each { println it }
}
}
答案 1 :(得分:1)
这是一个不需要添加其他配置的解决方案:
apply plugin: 'java'
repositories {
mavenCentral()
}
dependencies {
compile 'org.apache.ant:ant-javamail:1.9.0'
compile 'javax.mail:mail:1.4'
compile 'javax.activation:activation:1.1.1'
compile gradleApi()
compile localGroovy()
}
task deps << {
def home = project.gradle.startParameter.gradleHomeDir
project.configurations.runtime.files.findAll { f ->
!f.absolutePath.startsWith(home.absolutePath)
}.each {
println it
}
}