groovy 的編譯

用 Gradle 做很方便,build.gradle 裡要加

apply plugin: 'groovy'

然後程式碼依照 The Groovy Plugin – Gradle User Guide Version 3.2.1 裡的說明來安排就可以:

目錄 放什麼
src/main/java Java 程式碼 (對,可以跟 Java 一起編譯)
src/main/resources 會用到的資源
src/main/groovy Groovy 程式碼,也可以放 Java 程式碼
src/test/java Java 測試案例
src/test/resources 測試案例會用到的資源
src/test/groovy Groovy 測試案例
src/sourceSet/java Java source for the given source set
src/sourceSet/resources Resources for the given source set
src/sourceSet/groovy Groovy sources for the given source set. May also contain Java sources for joint compilation.

然後執行 gradle build 進行編譯,接著就可以在 build 裡找到 jar 檔案。

但是要注意的是,這個 jar 檔案不是 executable jar 檔案 (用 java -jar 就可執行的 jar ),要編譯為 executable jar 檔,得多做一些工。

第一個是要在 build.gradle 裡指定 manifest ,也就是在製作 jar 時,指定 META-INF ,告訴 java -jar 說,該執行哪個類別裡的 main。像下面就是自訂 Jar task ,並指定 manifest 的程式。

task uberjar(type: Jar) {
    from files(sourceSets.main.output.classesDir)
    from configurations.runtime.asFileTree.files.collect { zipTree(it) }

    manifest {
        attributes 'Main-Class': 'Program'  // 這邊就是依照 groovy 的類別與程式來放,假設下面的 groovy 程式放在 src/main/groovy/program.groovy
    }
}

接著,在 groovy 的主程式裡,加入 main ,這個 main 其實跟 java 的規定一樣,必須是 public, static ,接受字串陣列。


class Program {
  public static void main(String[] args){
    println "Hello world"
  }
}

最後執行 gradle uberjar ,就可以得到 executable jar 了
參考資料: