zoukankan      html  css  js  c++  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

                  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
    epository	omcat-redis-session-manager-master
           gradle  jar

                 
               

                 以上便表示成功,在buildlibs 可以找到tomcat-redis-session-manager-master-2.0.0.jar 文件,在buildclasses中可以找到.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


  • 相关阅读:
    Linux修改主机名称
    Druid监控SQL语句
    CentOS7.5搭建Hadoop分布式集群
    CentOS7.5 解决ifconfig报错
    windows 用VMware创建linux虚拟机,安装操作系统CentOS7.2
    MySQL报错this is incompatible with sql_mode=only_full_group_by
    CentOS配置Redis环境变量
    CentOS7.4搭建GitLab
    修改服务器路由策略
    Centos7 安装python3
  • 原文地址:https://www.cnblogs.com/wala-wo/p/5119212.html
Copyright © 2011-2022 走看看