2016-09-15 84 views
2

我在intelliJidea的java項目中使用gradle-2.8。我需要將2個不同的資源複製到2個不同的文件夾中。Java Gradle在一個任務中複製2個不同的文件夾

我想:

task copySubprojectLibs (type: Copy, dependsOn: subprojects.jar) { 
    from (subprojects.jar) { 
     into 'build/libs/lib' 
    } 

    from ('src/main/resources') { 
     into 'build/libs/nosr/conf' 
    } 
} 

然後嘗試:

task copySubprojectLibs (type: Copy, dependsOn: subprojects.jar) { 
    from (subprojects.jar) into 'build/libs/lib' 
    from ('src/main/resources') into 'build/libs/nosr/conf' 
} 

然後試圖刪除dependsOn,類型參數,重新排序線等,但我總是

> No value has been specified for property 'destinationDir'. 

什麼我必須做2個資源複製到2個不同的文件夾?在一項任務或兩項任務中,這兩項任務也不起作用。但只需簡單複製一行和一個任務即可。如何在一項任務中做到這一點?這是一個簡單的問題,爲什麼gradle那個棘手?

回答

1

Copy task配置了CopySpec,它只允許一個目標目錄。

考慮使用此方法代替:

task copySubprojectLibsA (type: Copy, dependsOn: subprojects.jar) { 
    from subprojects.jar 
    into 'build/libs/lib' 
} 

task copySubprojectLibsB (type: Copy, dependsOn: subprojects.jar) { 
    from 'src/main/resources' 
    into 'build/libs/nosr/conf' 
} 

task copySubprojectLibs(dependsOn: ["copySubprojectLibsA","copySubprojectLibsB"]) 

另一種方法是使用包含在搖籃的Ant構建:

task copySubprojectLibs (dependsOn: subprojects.jar) << { 
    files(subprojects.jar).each { 
     ant.copy(file: it.absolutePath, todir: "build/libs/lib") 
    } 
    ant.copy(todir: "build/libs/nosr/conf") { 
     fileset(dir: "src/main/resources") 
    } 
} 
+0

謝謝你,它的工作原理。但是我認爲在gradle中可能並不那麼棘手 – avalon

+0

爲了完整起見,我添加了一個使用Ant Builder的示例,以防讀者喜歡這種風格。 Gradle非常靈活,並提供了多種解決方案。 –

相關問題