Gradle(二) —— 运行自己的应用
Gradle(二) —— 运行自己的应用
### 1. 综述
完成简单的 Hello World 之后,怎么运行我们的程序呢,有三种方法:
- 直接用 IDE,右键 -> run 'Main.main'
- 在 gradle.build 中加入
application
plugin,进行一些配置,然后在命令行运行gradle run
- 在 gradle.build 中设置
jar
task,进行一些配置,然后在命令行运行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 | 将引用的包打进 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 一下。