Gradle插件是Gradle的扩展,它对project做了一些配置,会给project添加一些已经配置好的task。Gradle自身带了一些插件,你也可以自定义插件,然后提供给别人使用。其中一个是java plugin,它为project添加了一些task来对你的代码进行编译和单元测试,还有将代码打包成jar文件。
Java plugin是基于惯例的,这意味这在plugin内部定对project的各方面都定义了一些默认的值,比如java源文件的位置。如果您的projcet遵守这个管理,你一般不需要写太多的编译脚本就可以完成编译。Gradle允许您自定义您的project,如果您由于某些原因不想或这不能遵守这些惯例。实际上,由于对java project的支持是通过plugin来实现的,你可以完全不使用这个plugin来编译java工程。
使用java plugin很简单,只需要的build.gradle文件中添加下面一行代码即可:
apply plugin: 'java'
这行代码会应用java plugin到你的project,会添加一些tasks到你的project,可以通过gradle tasks命令来列出添加了哪些task,在本机上执行列出了以下几类task列表,每一类下面又有细分:
Build tasks,Build Setup tasks,Documentation tasks,Help tasks,Verification tasks
一些常用的task:
build:完整编译项目,包含编译,测试和创建jar包
clean:删除build目录
assemble: 编译和创建jar包,但不进行单元测试,其他一些插件可能会添加额外的功能。比如War插件,这个task会生成War file。
check:编译和测试代码。其他一些插件会添加更多的检查,比如checkStyle插件,它会对代码风格进行检查。
Gradle要求的一些惯例:产品源码位于src/main/java,测试代码位于src/test/java。所有位于src/main/resources的文件都被包含到jar包中作为资源文件,所有位于src/test/resources的文件都会被添加到classpath中来执行测试。所有的输出文件都会放在build目录里面,jar文件放在build/libs目录下。
添加Maven仓库
repositories {
mavenCentral()
}
gradle properties 列出工程的所有属性
自定义MANIFEST.MF文件
sourceCompatibility = 1.5
version = '1.0'
jar {
manifest {
attributes 'Implementation-Title': 'Gradle Quickstart',
'Implementation-Version': version
}
}
发布jar文件,在Gradle中jar文件是被发布到仓库中的,下面的例子中发布到了一个本地的目录,你也可以发布到一个远程的地址或者多个地址
uploadArchives{
repositories{
flatDir{
dirs 'testUpload'
}
}
}
多个java工程的编译
定义一个多工程的编译,需要在根目录创建一个设置文件,名称为settings.gradle,它指定了哪些项目即将被编译。 settings.gradle include "shared", "api", "services:webservice", "services:shared" 在多项目编译中,有一些配置是对所有的工程都需要的,这时我们会采取一种叫做configuration injection的技术:根目录相当于是个容器,subprojects方法会遍历根目录的子工程,然后将这些配置注入进去,通过这种方式我们可以很简单的定义一些共有的配置。 common configuration example: subprojects { apply plugin: 'java' apply plugin: 'eclipse-wtp' repositories { mavenCentral() } dependencies { testCompile 'junit:junit:4.11' } version = '1.0' jar { manifest.attributes provider: 'gradle' } }