有没有办法在gradle中为新创建的源集指定依赖项?

时间:2012-01-09 16:46:33

标签: java dependency-management gradle

在Gradle中,我为这样的服务测试创建了一个新的sourceSet

sourceSets{
    servicetest{
        java.srcDirs = [//path to servicetests]
    }
}

这个源集取决于TestNG,所以我希望通过执行以下操作来降低依赖性:

dependencies{
    servicetest(group: 'org.testng', name: 'testng', version: '5.8', classifier: 'jdk15')
}

不幸的是,这会返回错误。有没有办法声明特定sourceSet的依赖关系还是我运气不好?

2 个答案:

答案 0 :(得分:4)

最近的Gradle版本为每个源集'foo'自动创建并连接配置'fooCompile'和'fooRuntime'。

如果您仍在使用旧版本,则可以声明自己的配置并将其添加到源集的compileClasspath或runtimeClasspath。类似的东西:

configurations {
    serviceTestCompile
}

sourceSets {
    serviceTest {
        compileClasspath = configurations.serviceTestCompile
    }
}

dependencies {
    serviceTestCompile "org.testng:testng:5.8"
}

答案 1 :(得分:2)

以下适用于Gradle 1.4。

apply plugin: 'java'

sourceCompatibility = JavaVersion.VERSION_1_6

sourceSets {
    serviceTest {
        java {
            srcDir 'src/servicetest/java'
        }
        resources {
            srcDir 'src/servicetest/resources'
        }
        compileClasspath += sourceSets.main.runtimeClasspath
    }
}

dependencies {
    compile(group: 'org.springframework', name: 'spring', version: '3.0.7')

    serviceTestCompile(group: 'org.springframework', name: 'spring-test', version: '3.0.7.RELEASE')
    serviceTestCompile(group: 'org.testng', name:'testng', version:'6.8.5')
}


task serviceTest(type: Test) {
    description = "Runs TestNG Service Tests"
    group = "Verification"
    useTestNG()
    testClassesDir = sourceSets.serviceTest.output.classesDir
    classpath += sourceSets.serviceTest.runtimeClasspath
}