• 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. OA学习笔记-006-SPRING2.5与hibernate3.5整合

    一.为什么要整合 1,管理SessionFactory实例(只需要一个) 2,声明式事务管理 spirng的作用 IOC 管理对象.. AOP 事务管理.. 二.整合步骤 1.整合sessionFac ...

  2. BZOJ2295: 【POJ Challenge】我爱你啊

    2295: [POJ Challenge]我爱你啊 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 126  Solved: 90[Submit][Sta ...

  3. 如何设置SVN提交时强制添加注释

    windows版本: 1.新建一个名为pre-commit.bat的文件并将该文件放在创建的库文件的hooks文件夹中 2.pre-commit.bat文件的内容如下: @echo off set S ...

  4. ASP.NET(C#) GridView (编辑、删除、更新、取消)

    转自:http://my.oschina.net/dldlhrmc/blog/93458 前台代码 view source   print? 01 <%@ Page Language=" ...

  5. [转]NHibernate之旅(4):探索查询之条件查询(Criteria Query)

    本节内容 NHibernate中的查询方法 条件查询(Criteria Query) 1.创建ICriteria实例 2.结果集限制 3.结果集排序 4.一些说明 根据示例查询(Query By Ex ...

  6. Apache 虚拟主机 VirtualHost 配置

    虚拟主机 (Virtual Host) 是在同一台机器搭建属于不同域名或者基于不同 IP 的多个网站服务的技术. 可以为运行在同一物理机器上的各个网站指配不同的 IP 和端口, 也可让多个网站拥有不同 ...

  7. 16个最棒的jQuery视差滚动效果教程

    今天我们整理了16个最棒的jQuery视差滚动效果教程 , 并附有演示地址,你可以快速的查看教程的效果,或者应用在自己的项目中.希望本文对想要学习或者使用jQuery视差效果的朋友有帮助,慢慢的欣赏吧 ...

  8. ActiveMQ入门实例(转)

    1.下载ActiveMQ 去官方网站下载:http://activemq.apache.org/ 2.运行ActiveMQ 解压缩apache-activemq-5.5.1-bin.zip,然后双击a ...

  9. QinQ封装及终结详解

    以下内容摘自正在当当网.京东网.卓越网.互动出版网预售,即将正式发售的<华为交换机学习指南>一书(全书近千页).本书是由华为官方授权,国内第一本,也是唯一一本华为交换机权威学习指南,是华为 ...

  10. JavaScript apply函数小案例

    //回调函数1 function callback(a,b,c) { alert(a+b+c); } //回调函数2 function callback2(a,b) { alert(a+b); } / ...