Gradle(二) —— 運行自己的應用
### 1. 綜述
完成簡單的 Hello World 之后,怎么運行我們的程序呢,有三種方法:
- 直接用 IDE,右鍵 -> run 'Main.main'
- 在 gradle.build 中加入
applicationplugin,進行一些配置,然后在命令行運行gradle run - 在 gradle.build 中設置
jartask,進行一些配置,然后在命令行運行java -jar myapplication.jar
### 2. 用 IDE 操作方法自然不用贅述,可以順利執行成功。那么執行時發生了什么呢,答案是 **IDE自動在項目文件夾里生成了一個 build 文件夾,其中是以包名為結構的文件層次,最后整個build文件夾僅有一個文件 build\com\mycompany\main.class**,在所有的執行方法里,此種方法對項目文件夾的改變最小。
### 3. application plugin 在 gradle.build 加入
apply plugin 'application'
application plugin 會為項目增加若干個task我們需要用到的是 application/run,運行 run 之前,還要配置項目的主類,讓 run 能找到它。
gradle.build
mainClassName = 'com.mycompany.Main'
然后在命令行運行 run
gradle run
即可。
3.1 做了什么
gradle run 同樣生成了 build 文件夾,也包含 build\com\mycompany\main.class,同時還加入了其他一些文件。
4. jar task
在 gradle.build 中加入 jar task
jar {
manifest.attributes 'Main-Class': 'com.mycompany.Main'
from configuration.compile.collect { zipTree it}
}
上述代碼的作用:
| 語句 | 作用 | 不加會出現的錯誤 |
|---|---|---|
| manifest.attributes 'Main-Class': 'com.mycompany.Main' | 打包成的 jar 包里的 MANIFEST.MF 文件里加入 Main-Class: cn.edu.tju.Main 一行 |
運行 jar 包找不到主類 |
| from configuration.compile.collect { zipTree it} | 將引用的包打進 jar 包 | Class not found,因為引用了卻找不到 |
之后執行
gradle build
在生成的 build 文件夾內會有 build\libs\test-1.0-SNAPSHOT.jar,運行 jar 包即可,在 libs 文件夾中
java -jar test-1.0-SNAPSHOT.jar
即可成功運行。
4.1 做了什么
gradle build 命令構建l了這個項目,生成了 build 文件夾,其中不但含有 jar 包,還有 tar\zip.bat等,也有 .class 文件。它生成的文件最多,包含了上述兩種方法生成的文件。
5. 其他
gradle clean
命令將會清理 gradle build 的結果,即刪除 build 文件夾,每一次 build 前最好都 clean 一下。
