用 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/ |
Java source for the given source set |
src/ |
Resources for the given source set |
src/ |
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 了
參考資料:
- Gradle Build a Groovy Project
- Groovy Quickstart – Gradle User Guide Version 3.2.1
- Groovy 插件 – Gradle 使用指南 – 极客学院Wiki
- Create a Groovy executable JAR with Gradle – Stack Overflow
- bond-/gradle-groovy-jar-example: Example for a groovy executable using gradle-1.0, http://stackoverflow.com/questions/9749032/create-a-groovy-executable-jar-with-gradle