官网地址:http://www.gradle.org/docs/2.1/userguide/tutorial_java_projects.html
A basic Java project 1个基础的java工程
使用java插件在build.gradle:
apply plugin: 'java'
Building the project 构建工程
这里使用gradle/samples/java/quickstart 示例工程。shell进该目录。
> gradle build
命令所 运行的任务有 (你可使用gradle taskName 来单独运行以下的1种任务):
:compileJava
:processResources
:classes
:jar
:assemble
:compileTestJava
:processTestResources
:testClasses
:test
:check
:build
任务后提示 UP-TO-DATE 表示文件无更新,已为最新
任何履行成功后,会在当前目录下生成build目录,build目录下生成的部分目录有:
libs/ JAR file in the directory
src/main/java/ source code
src/test/java/ test source code
src/main/resources/ will be include in the JAR file
src/test/resources/ will be include in the classpath used to run the tests
其他1些 有用的任务:
clean 清除build目录
< gradle clean
Deletes the build directory, removing all built files.
assemble 编译打jar包
< gradle assemble
:compileJava
:processResources
:classes
:jar
:assemble
会调用这5个task。编译,处理资源,生成字节码,生成jar包
External dependencies 外部依赖
通常1个项目会援用1些外部的JAR包。那末就需要告知Gradle在哪里可以找到它们。
在Gradle中,比如JAR文件,位于1个存储仓库(repository)。
存储仓库可以 获得依赖或发布它使之独立(比如jar包,javadoc文档)。
本例使用Maven仓库。
build.gradle:
repositories {
mavenCentral()
}
本例需要添加1个.java源码编译时的依赖:commons-collections
和1个test源码编译时的依赖:junit
build.gradle:
dependencies {
compile group: 'commons-collections', name: 'commons-collections', version: '3.2'
testCompile group: 'junit', name: 'junit', version: '4.+'
}
Customizing the project 定制工程
Java插件添加了许多特性到您的项目。这些属性通常有默许值。如果他们不合适,很容易改变这些值。
例子中,将为我们的Java项目指定版本号,和我们的源代码的编译级别。
在JAR-manifest中,我们还添加了1些属性。
build.gradle:
//java compile version
sourceCompatibility = 1.5
//project version
version = '1.0'
jar {
manifest {
attributes 'Implementation-Title': 'Gradle Quickstart',
'Implementation-Version': version
}
}
添加1个test 系统属性
build.gradle:
test {
systemProperties 'property': 'value'
}
Publishing the JAR file 发布JAR包
1般打JAR包需要指定1个位置。就是要告知Gradle这个位置。例子中打包到本地目录。也能够发布到远程位置或多个位置
build.gradle:
uploadArchives {
repositories {
flatDir {
dirs 'repos' //publish to flat dir : repos
}
}
}
Creating an Eclipse project 创建1个Eclipse工程
要创建Eclipse独有的描写符文件,如.project文件,你需要添加另外1个插件到您的构建文件:
build.gradle:
apply plugin: 'eclipse'
> gradle eclipse
ls -al 发现有了 .project
同理,发现gradle java 也能够履行:
:compileJava UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:javadoc
结果是编译并生成了javadoc文档
小结
<span style="font-size:14px;"><span style="font-family:SimSun;font-size:14px;">apply plugin: 'java'
apply plugin: 'eclipse'
sourceCompatibility = 1.5
version = '1.0'
jar {
manifest {
attributes 'Implementation-Title': 'Gradle Quickstart',
'Implementation-Version': version
}
}
repositories {
mavenCentral()
}
dependencies {
compile group: 'commons-collections', name: 'commons-collections', version: '3.2'
testCompile group: 'junit', name: 'junit', version: '4.+'
}
test {
systemProperties 'property': 'value'
}
uploadArchives {
repositories {
flatDir {
dirs 'repos'
}
}
}</span></span>
Multi-project Java build 多Java工程构建
本节采取gradle/samples/java/multiproject 示例, shell 进该目录。
Build layout 构建布局:
multiproject/
api/
services/webservice/
shared/
services/shared/
Defining a multi-project build 定义1个多工程的构建
要定义1个多项目构建,你需要创建1个设置文件。设置文件在源代码树的根目录下。名为settings.gradle
settings.gradle:
include "shared", "api", "services:webservice", "services:shared"
说明 包括了 4个目录
Common configuration 经常使用配置
定义1些对所有项目都通用的配置。采取1种叫 配置反射(configuration injection) 的技术。
build.gradle:
subprojects {
apply plugin: 'java'
apply plugin: 'eclipse-wtp'
repositories {
mavenCentral()
}
dependencies {
testCompile 'junit:junit:4.11'
}
version = '1.0'
jar {
manifest.attributes provider: 'gradle'
}
}
利用java插件到每一个子项目。意味着可以在子项目中,使用上1节讲的任务和配置属性。如 gradle build。
注意所构建出的文件都在子项目中,而不是在根目录下。子项目里可以有自己的build.gradle 构建文件
Dependencies between projects 项目间的依赖关系
1个项目依赖了另外一个项目的jar包。例子里,在api/build,声明了 依赖项目 shared
api/build.gradle:
dependencies {
compile project(':shared’)
}
Creating a distribution 创建发布任务
api/build.gradle:
task dist(type: Zip) {
dependsOn spiJar
from 'src/dist'
into('libs') {
from spiJar.archivePath
from configurations.runtime
}
}
artifacts {
archives dist
}
> gradle dist
以zip类型发布api工程的Jar包,依赖了任务spiJar,从目录src/dist 添加到(打包进)build/libs/
该命令还会生成1个发布目录:build/distributions