• 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

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

以上便表示成功,在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

使用gradle构建java项目的更多相关文章

  1. 使用 Gradle 构建 Java 项目

    使用 Gradle 构建 Java 项目 这个手册将通过一个简单的 Java 项目向大家介绍如何使用 Gradle 构建 Java 项目. 我们将要做什么? 我们将在这篇文档航中创建一个简单的 Jav ...

  2. Gradle构建Java项目

    前提:已经安装好Gradle 一.创建目录结构 在项目主目录下,创建以下子目录;在*nix系统下可以使用命令: mkdir -p src/main/java/hello vim src/main/ja ...

  3. 在gradle中构建java项目

    目录 简介 构建java项目的两大插件 管理依赖 编译代码 管理resource 打包和发布 生成javadoc 简介 之前的文章我们讲到了gradle的基本使用,使用gradle的最终目的就是为了构 ...

  4. Gradle构建Java Web应用(转)

    转自:http://www.blogjava.net/jiangshachina/archive/2014/02/03/409285.html 本文是发布在java.net上的一篇摘自于<Gra ...

  5. 使用Gradle构建Android项目

    阅读目录 Gradle是什么? 环境需求 Gradle基本结构 任务task的执行 基本的构建定制 目录配置 签名配置 代码混淆设置 依赖配置 输出不同配置的应用 生成多个渠道包(以Umeng为例) ...

  6. Gradle构建Java Web应用:Servlet依赖与Tomcat插件(转)

    Gradle的官方tutorial介绍了构建Java Web应用的基本方法.不过在使用Servlet做上传的时候会碰到问题.这里分享下如何通过Servlet上传文件,以及如何使用Gradle来构建相应 ...

  7. 使用 Gradle 编译 Java 项目时报错: Could not find Tools.jar

    在使用Android studio进行编译成jar的时候,遇到Gradle 编译错误,听前辈们说是jdk的版本不对,于是乎就更新了一下jdk, 然而可能是我重新安装jdk的时候改变了安装路径, 在pr ...

  8. vscode + gradle 创建 java 项目 - java language server无法启动

    1.在系统上安装一个版本的gradle,用`gradle init --type java-application`创建一个默认的java项目,假设项目目录是hellojava 2.vscode写ja ...

  9. Java-Maven-Runoob:Maven 构建 Java 项目

    ylbtech-Java-Maven-Runoob:Maven 构建 Java 项目 1.返回顶部 1. Maven 构建 Java 项目 Maven 使用原型 archetype 插件创建项目.要创 ...

随机推荐

  1. 【HDU 2855】 Fibonacci Check-up (矩阵乘法)

    Fibonacci Check-up Problem Description Every ALPC has his own alpc-number just like alpc12, alpc55, ...

  2. 【BZOJ 2820】 YY的GCD (莫比乌斯+分块)

    YY的GCD   Description 神犇YY虐完数论后给傻×kAc出了一题 给定N, M,求1<=x<=N, 1<=y<=M且gcd(x, y)为质数的(x, y)有多少 ...

  3. ANDROID_MARS学习笔记_S03_009_GOOGLEMAP3

    一.代码 1.xml(1)main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLay ...

  4. perl 对象

    唯一标识: 很明显,一个%employee 是不够的,每个雇员都要求有一个唯一标识和他或她自己的属性集合. 你可以动态的分配这个数据结构,也可以返回一个指向局部数据结构的引用 Vsftp:/root/ ...

  5. android Spinner的使用

    首先是MainActivity package com.example.spinnertest; import java.util.ArrayList; import java.util.List; ...

  6. (转载)使用JavaScript操作表单

    (转载)http://www.blogjava.net/junglesong/archive/2008/03/02/183263.html 使用JavaScript操作表单 获取表单的引用 在开始对表 ...

  7. 解决Ubuntu下sublime3无法输入中文

    参考site: https://github.com/YoungZHU/sublime-imfix 1. 下载sublime-imfix.c  假设下载到了 home(-)目录下 2. 安装c\C++ ...

  8. 如何解决PHP生成UTF-8编码的CSV文件用Excel打开乱码的问题

    为了识别 Unicode 文件,Microsoft 建议所有的 Unicode 文件应该以 ZERO WIDTH NOBREAK SPACE字符开头.这作为一个”特征符”或”字节顺序标记(byte-o ...

  9. php连接mysql数据库练手

    <?php $servername = "localhost"; $username = "yosha"; $password = "leon0 ...

  10. 基于TCP协议的服务器(多线程)

    import java.io.BufferedOutputStream; import java.io.BufferedReader; import java.io.IOException; impo ...