基于gradle构建java应用程序
2018年6月30日 23:33
基于gradle构建java应用程序示例
目录
你需要什么
用户手册
初始项目
项目结构
编译项目
运行项目
总结
源码
你需要什么
- 大约8分钟
- 一个文本编辑器
- 命令行终端
- jdk1.7或更高版本
- 最近版本的gradle
用户手册
gradle带有内置的init插件。它的文档地址
这个插件有一个task,名叫init,可以生成项目. init task使用内置的wrapper task生成wrapper脚本gradlew
运行init task
gradle init --type <name>
参数name可选值
- java-application
- java-library
- scala-library
- groovy-library
- basic
这里我们选择java-application类型
首先创建项目目录
$ mkdir java-demo $ cd java-demo
初始化项目
在项目目录中运行init task,并使用参数java-application
$ gradle init --type java-application Starting a Gradle Daemon (subsequent builds will be faster) > Task :wrapper > Task :init BUILD SUCCESSFUL
init task先运行wrapper task生成gradlew、gradlew.bat脚本,并创建下面的项目结构
├── build.gradle ├── gradle #wrapper的文件 │ └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── settings.gradle └── src ├── main │ └── java #源文件 │ └── App.java └── test #测试 └── java └── AppTest.java
项目结构
settings.gradle有很多注释,有效行只有一行
settings.gradle
rootProject.name='java-demo'
配置root project的名称java-demo
生成的build.gradle同样有很多注释,下面是有效部分
build.gradle
apply plugin: 'java' apply plugin: 'application' repositories { jcenter() #公有仓库 } dependencies { compile 'com.google.guava:guava:21.0' #google的guava包 testCompile 'junit:junit:4.12' #junit测试包 } mainClassName = 'App' #main类
build文件中加了java和application两个插件。前者支持java项目,后者允许指定包含main方法的类,在编译时执行
src/main/App.java
public class App { public String getGreeting() { return "Hello world."; } public static void main(String[] args) { #在运行application插件的run task时调用 System.out.println(new App().getGreeting()); } }
src/test/java/AppTest.java
import org.junit.Test; import static org.junit.Assert.*; public class AppTest { @Test public void testAppHasAGreeting() { App classUnderTest = new App(); assertNotNull("app should have a greeting", classUnderTest.getGreeting()); } }
编译项目
编译项目使用build命令。可以使用常用的gradle命令,但是使用wrapper脚本更好
$ ./gradlew build > Task :compileJava > Task :processResources NO-SOURCE > Task :classes > Task :jar > Task :startScripts > Task :distTar > Task :distZip > Task :assemble > Task :compileTestJava > Task :processTestResources NO-SOURCE > Task :testClasses > Task :test > Task :check > Task :build BUILD SUCCESSFUL
注意:第一次运行时会比较慢
第一次运行build时,会检查.gradle目录是否存在guava、junit包。如果不存在,则下载并存到本地目录
下次运行build就使用缓存。build task编译class文件,运行test用例,生成测试报告
查看html报告build/reports/tests/test/index.html.
样例
运行项目
gradle构建使用了application插件,所以能在命令行运行程序。
看看有哪些task
$ ./gradlew tasks :tasks ------------------------------------------------------------ All tasks runnable from root project ------------------------------------------------------------ Application tasks ----------------- run - Runs this project as a JVM application // ... many other tasks ...
run task会让gradle读取mainClassName属性指定的类,执行main方法
$ ./gradlew run :compileJava UP-TO-DATE :processResources NO-SOURCE :classes UP-TO-DATE :run Hello world. BUILD SUCCESSFUL
总结
通过上面介绍可以学到
- 如何生成java应用程序
- 如何生成build文件、java文件
- 如何运行构建、查看测试报告
- 如何使用application插件的run task执行程序
源码
github地址
参考资料
《了凡四训》详解之改过之法
印光大师十念法(胡小林主讲第1集)