2017-06-17 105 views
0

我有兩個任務,jarrun,這兩個任務都取決於build任務。當調用jar時,我希望它只在特定文件夾中構建文件。然後,當調用run時,我希望它生成jar所做的相同文件以及來自其他文件夾的文件。具有不同源集的Gradle任務

這裏有一個sudo的代碼示例:

jar.build.sourcesets += 'my/path/to/files' 
run.build.sourcesets += jar.build.sourcesets 
run.build.sourcesets += 'additonal/path/to/files' 

這就是我現在所擁有的在我的build.gradle文件不工作:

sourceSets { 
    main.kotlin.srcDirs += 'src/main/kotlin' 
    run.kotlin.srcDirs += 'src/test/kotlin' 
    run.resources.srcDirs += "src/main/resources" 
    run.resources.srcDirs += "src/test/resources" 
    run.output.resourcesDir = "build/js/resources" 
} 

我一直在閱讀有關sourcesets但我還沒有找到解決方案。我應該如何去做這件事?

回答

0

那麼幾個小時的搜索後,我發現這個鏈接的解決方案: How to print task name in gradle?

我可以使用taskNames陣列在運行時進行檢查,看是叫什麼任務。

sourceSets { 
    main.kotlin.srcDirs += 'src/main/kotlin' 

    if(project.gradle.startParameter.taskNames.contains("run")) { 
     main.kotlin.srcDirs += 'src/test/kotlin' 
     main.resources.srcDirs += "src/main/resources" 
     main.resources.srcDirs += "src/test/resources" 
     main.output.resourcesDir = "build/js/resources" 
    } 
}