grade java_使用gradle构建java项目

gradle是什么东东

gradle是继ant,maven之后另外一种的面向java的自动化项目构建工具,他是基于groovy语言的。相对于ant,maven,gradle显得更加简单。

安装gradle

gradle从官方网站上下载http://gradle.org/,加压后拷贝到要安装的指定目录下。

配置环境变量

需要配置GRADLE_HOME路径,同时配置classpath和path两个环境变量

1、在path追加;%GRADLE_HOME%/bin

2、在classpath追加;%GRADLE_HOME%/lib

eclise中安装gradle插件

插件安装地址:http://dist.springsource.com/release/TOOLS/gradle

关于gradle免费的ebook

官方网站上提供红宝书的如何使用gradle的ebook,只要输入电子邮箱即可,下面是我提供的ebook下载地址

gradle语法

1、gradle常用命令语法

/*gradle 帮助命令*/

gradle --help

/*gradle 状态查看*/

gradle status

/*gradle 构建*/

gradle build

/*查看所有任务*/

gradle tasks

/*查看项目的属性*/

grade Properties

/*查看项目依赖关系*/

gradle dependencies

2、语法解释,创建名为HelloWorld的任务

task HelloWorld(dependsOn:BeforeHellowWord) << {

doLast{

println 'hello, world'

}

}

<< 表示追加代码

doLast表示当前代码加到当前任务的前面执行过程

声明依赖关系两种方式

直接在任务中定义dependsOn依赖的任务,或者先声明task,然后再声明依赖关系

HelloWorld.dependsOn BeforeHellowWord

执行以下指令

gradle -q helloWorld

显示结果为hello, world

3、gradle属性定义

#方式一

task taskDescriptionOne << {

description = 'this is task taskDescriptionOne'

println description

}

#方式二

task taskDescriptionTwo << {

println description

}

taskDescriptionTwo.description = 'this is task taskDescriptionTwo'

#方式三

task taskDescriptionThree << {

println description

}

taskDescriptionThree{

description = 'this is task taskDescriptionThree'

}

Gradle都会为每一个task在Project中创建一个同名的Property,我们可以将该Task当作Property来访问,诸如taskDescriptionTwo 。另外,Gradle还会创建一个同名的方法,该方法接受一个闭包,我们可以使用该方法来配置Task,诸如taskDescriptionThree.

gradle自定义属性

gradle默认的属性有以下这些常用的属性

project:Project本身

name:Project的名字

path:Project的绝对路径

description:Project的描述信息

buildDir:Project构建结果存放目录

version:Project的版本号

另外gradle还允许通过以下几种方式自定义属性

1、在build.gradle文件中定义Property

在build.gradle文件中向Project添加额外的Property时,我们并不能直接定义,而是应该通过ext来定义。如果要添加一个名为property1的Property,我们应该:

ext.property1 = "this is property1"

通过闭包方式进行自定义属性

ext {

property2 = "this is property2"

}

在定义了Property后,使用这些Property时我们则不需要ext,而是可以直接访问:

task showProperties << {

println property1

println property2

}

2、通过命令行参数定义Property

Gradle还提供了-P命令行参数来设置Property,比如:

task showCommandLieProperties << {

println property3

}

在执行“gradle showCommandLieProperties”时,终端输出如下:

* What went wrong:

Execution failed for task ':showCommandLieProperties'.

> Could not find property 'property3' on task ':showCommandLieProperties'.

表示property3并没有被定义,在调用gradle命令时,通过-P参数传入该Property:

gradle -P property3="this is property3" showCommandLieProperties

此时终端显示:

:showCommandLieProperties

this is property3

BUILD SUCCESSFUL

3、通过JVM系统参数定义Property

在java中,我们可以通过-D参数定义JVM的系统参数,然后在代码中可以可以通过System.getProperty()进行获取。在Gradle中,我们也可以通过-D的方式向Project传入Property,每一个通过-D方式声明的Property都需要以“org.gradle.project”为前缀,对于上面的showCommandLieProperties,我们也可以通过以下方式设置property3:

gradle -Dorg.gradle.project.property3="this is another property3" showCommandLieProperties

4、通过环境变量设置Property

我们还可以通过设置环境变量的方式设置Project的Property。在定义环境变量时,每一个Property都需要以“ORG_GRADLE_PROJECT_”为前缀:

export ORG_GRADLE_PROJECT_property3 = "this is yet another property3"

在调用showCommandLieProperties时,我们便不需要传入命令行参数了:

gradle showCommandLieProperties

gradle定义依赖

定义maven依赖

dependencies {

compile 'org.slf4j:slf4j-log4j12:1.7.2'

testCompile 'junit:junit:4.8.2'

}

定义project依赖

dependencies {

compile project(':ProjectB')

}

对本地文件系统的jar文件依赖

dependencies {

compile files('spring-core.jar', 'spring-aap.jar')

compile fileTree(dir: 'deps', include: '*.jar')

}

gradle自定义task类型

class HelloWorldTask extends DefaultTask {

@Optional

String message = 'I am davenkin'

@TaskAction

def hello(){

println "hello world $message"

}

}

task hello(type:HelloWorldTask)

task hello1(type:HelloWorldTask){

message ="I am a programmer"

}

使用gradle 打包jar

cd F:\SvnCodeManage\repository\tomcat-redis-session-manager-master

gradle jar

dae406f52156ffc9fa5f5f7a81db252e.png

以上便表示成功,在build\libs 可以找到tomcat-redis-session-manager-master-2.0.0.jar 文件,在build\classes中可以找到.class文件

一个完整的gradle.build配置文件

apply plugin: 'java'

apply plugin: 'maven'

apply plugin: 'signing'

group = 'com.orangefunction'

version = '2.0.0'

repositories {

mavenCentral()

}

compileJava {

sourceCompatibility = 1.7

targetCompatibility = 1.7

}

dependencies {

compile group: 'org.apache.tomcat', name: 'tomcat-catalina', version: '7.0.27'

compile group: 'redis.clients', name: 'jedis', version: '2.5.2'

compile group: 'org.apache.commons', name: 'commons-pool2', version: '2.2'

//compile group: 'commons-codec', name: 'commons-codec', version: '1.9'

testCompile group: 'junit', name: 'junit', version: '4.+'

testCompile 'org.hamcrest:hamcrest-core:1.3'

testCompile 'org.hamcrest:hamcrest-library:1.3'

testCompile 'org.mockito:mockito-all:1.9.5'

testCompile group: 'org.apache.tomcat', name: 'tomcat-coyote', version: '7.0.27'

}

task javadocJar(type: Jar, dependsOn: javadoc) {

classifier = 'javadoc'

from 'build/docs/javadoc'

}

task sourcesJar(type: Jar) {

from sourceSets.main.allSource

classifier = 'sources'

}

artifacts {

archives jar

archives javadocJar

archives sourcesJar

}

signing {

sign configurations.archives

}

uploadArchives {

repositories {

mavenDeployer {

beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) }

//repository(url: "https://oss.sonatype.org/service/local/staging/deploy/maven2/") {

//  authentication(userName: sonatypeUsername, password: sonatypePassword)

//}

//repository(url: "https://oss.sonatype.org/content/repositories/snapshots") {

//  authentication(userName: sonatypeUsername, password: sonatypePassword)

//}

pom.project {

name 'tomcat-redis-session-manager'

packaging 'jar'

description 'Tomcat Redis Session Manager is a Tomcat extension to store sessions in Redis'

url 'https://github.com/jcoleman/tomcat-redis-session-manager'

issueManagement {

url 'https://github.com:jcoleman/tomcat-redis-session-manager/issues'

system 'GitHub Issues'

}

scm {

url 'https://github.com:jcoleman/tomcat-redis-session-manager'

connection 'scm:git:git://github.com/jcoleman/tomcat-redis-session-manager.git'

developerConnection 'scm:git:git@github.com:jcoleman/tomcat-redis-session-manager.git'

}

licenses {

license {

name 'MIT'

url 'http://opensource.org/licenses/MIT'

distribution 'repo'

}

}

developers {

developer {

id 'jcoleman'

name 'James Coleman'

email 'jtc331@gmail.com'

url 'https://github.com/jcoleman'

}

}

}

}

}

}

参考资料

http://www.cnblogs.com/CloudTeng/p/3422009.html

http://blog.csdn.net/maosidiaoxian/article/details/40340571

http://www.davenkin.me/post/2013-11-12/gradle-first-try

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值