2012-01-09 70 views
3

在gradle這個我已經創造了這樣的服務測試的新sourceSet有沒有一種方法可以指定Gradle中新創建的源代碼集的依賴關係?

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

此源集依賴於TestNG的,所以我希望通過做一些像拉依賴性下降:

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

不幸的是,這會返回一個錯誤。有什麼辦法可以聲明一個具體的sourceSet的依賴關係,還是我運氣不好?

回答

4

最近的Gradle版本爲每個源集「foo」自動創建並連接配置'fooCompile'和'fooRuntime'。

如果您仍在使用舊版本,則可以聲明自己的配置並將其添加到源集的compileClasspath或runtimeClasspath。例如:

configurations { 
    serviceTestCompile 
} 

sourceSets { 
    serviceTest { 
     compileClasspath = configurations.serviceTestCompile 
    } 
} 

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

很高興知道,但不幸的是,我現在連接到gradle 0.9.2 – AgentRegEdit 2012-01-09 17:06:18

+0

當你說最近,至於什麼版本?這不適合Gradle 1.4。 – 2013-05-23 16:06:10

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 
} 
相關問題