2017-08-02 49 views
0

我想實現一個編譯一些java類並將其複製到tomcat目錄的gradle構建腳本。我不想使用Gradle Java插件,因爲它有很多不相關的東西。我想定義自己編譯的&部署任務。我已經實現它如下 -編譯任務運行成功但不生成任何類文件

task compile (type: JavaCompile) { 
    source = fileTree('$srcdir') 
    destinationDir = file('$builddir') 
    classpath = files('lib') 
    sourceCompatibility = '1.8' 
} 


task deploy (type: Copy) { 
    dependsOn compile 
    from fileTree('build') { 
     include fileTree('classes') 
    } 
    from fileTree('lib') { 
     include '*' 
    } 
into '${tomcathome}//${projectname}' 
} 

我還沒有觸及部署任務呢。當我運行編譯任務時,它運行成功,但不生成任何類文件。我期待它在/ build目錄下生成。

請建議。

感謝

+0

使用時您需要使用的GString「」和$ buildDir – LazerBanana

+0

同樣的問題爲''$ srcdir''變量。我不知道你在哪裏指定'srcdir',但是你不能用一個簡單的String(單引號)來使用它,因爲這樣它總是會被解釋爲字面位置(一個名爲'$的子文件夾srcdir'在這種情況下)。您需要使用GString(雙引號),正如@LazerBanana所述。或者你可以只使用變量而不是將其包裝到GString中:'fileTree(srcdir)' –

+0

感謝您的輸入。這個字符串字面意義的確幫助我解決了我的問題。我期待在gradle.properties中配置這些參數 - srcdir,builddir和其他類似的參數。這些文件與我的build.gradle位於同一圖層,但如果在gradle.properties中配置,則無法獲取參數的值。在開始構建任務之前,我是否需要做其他的事情來讓gradle加載這個屬性文件? – Techie

回答

0

總結在回答的意見,你需要使用GString像@ lu.koerfer說

這種方式,總是會(一個子文件夾名爲$解釋爲文本的位置在這種情況下srcdir)

這是在字符串中使用變量時需要的,如果不需要在字符串中使用它,則不需要(那麼您不需要美元符號)。

不知道如何您的變量定義,但對於構​​建和源目錄您應使用搖籃提供變量

buildDir指向build目錄

sourceSets.main.java.getSrcDirs()獲取源目錄(取決於項目結構)

sourceSets.main.java.srcDirs但是請注意,這將返回源目錄的集合,具體取決於您指定sourceSets的方式,或者如果您還沒有完成,默認情況下會返回maven約定結構src/main/java

對於一些全局變量,請閱讀Ext variables

+0

感謝您的輸入。這個字符串字面意義的確幫助我解決了我的問題。我期待在gradle.properties中配置這些參數 - srcdir,builddir和其他類似的參數。這些文件與我的build.gradle位於同一圖層,但如果在gradle.properties中配置,則無法獲取參數的值。在開始構建任務之前,我是否需要做其他事情來讓Gradle加載這個屬性文件 – Techie

+0

閱讀關於ext變量 – LazerBanana

相關問題