zoukankan      html  css  js  c++  java
  • Gradle学习(二) Java Plugin

    Java Plugin拥有一些帮助你的项目完成编译,单元测试以及对你的代码进行单元测试打包等一些操作的task
    如果需要使用Java Plugin 只需要在你的build.gradle中添加
    apply plugin: 'java' 这样一行即可,这样短短一行会给你的项目添加很多的task
    可以使用gradle task命令来查看你的项目中有哪些task
    Gradle 默认期望在src/main/java中去寻找你的代码,在src/test/java中去寻找你的测试代码,src/main/resources会作为classpath,所有的输出文件都会创建在build目录下,jar包最终都会在build/libs目录下
    构建一个工程
    使用gradle build命令,Gradle会编译你的代码并且运行测试代码创建jar包
    在gradle安装目录samplesjavaquickstart下运行gradle build命令,运行成功之后会出现一个名为build的文件夹,该文件夹目录结构如下
    classes文件夹存放编译之后的字节码文件,libs目录下存放打包的jar文件,reports的文件夹下存放着本次打包的测试报告,resources文件夹下存放的内容与src/main/resources文件夹内容相同,
    test-results文件夹下存放的本次打包的测试结果XML形式
    其他一些常用指令
    gradle clean 删除build目录
    gradle assemble 编译并且打jar包,但是不会运行单元测试代码,其他一些插件也有该task,比如War plugin,会为你的项目构建war包
    gradle check 编译并且运行你的测试代码,其他一些插件也有该task ,比如Code-quality plugin就会对的代码进行checkstyle操作

     

    外部jar包依赖
    一个Java工程通常会依赖于外部的jar包,Gradle可以使用Maven的仓库来获取或者发布相应的jar包。
    Gradle配置Maven中央仓库
     
    repositories {
        mavenCentral()
    }
    

    添加依赖jar包

    dependencies {
       compile group: 'commons-collections', name: 'commons-collections',version: '3.2'
       testCompile group: 'junit', name: 'junit', version: '4.+'
    }
    

    compile group代表编译期依赖该jar包,testCompile group 代表测试时期依赖的jar,对比maven的配置应为

    可以看出gradle的配置更为简洁

    个性化配置构建参数
    java plugin为你项目默认生成了许多相关的配置参数,在通常情况下这些参数的默认值都能满足你的需求,如果不能满足你的需求的话这些配置参数也可以被很容易的被修改
    sourceCompatibility=1.7设置项目Java版本的兼容性为1.7
    version=‘1.0’设置项目的版本号为1.0
    jar {
      manifest {
           attributes 'Implementation-Title':'Gradle Quickstart','Implementation-Version': version
     }
    }
    

      

    为jar包的manifest文件添加属性
    你可以使用gradle properties来列出当前项目的配置参数信息以及它们的值
     
    发布jar包
    uploadArchives {
       repositories {
         flatDir {
            dirs 'repos'
          }
       }
    }
    

      

    运行gradle uploadArchives之后会在当前目录下生产一个名为repos的目录里面有对应的jar包信息,可以通过修改dirs的方式将jar包发送到中央仓库
    创建一个Eclipse项目
    如果需要将你的项目导入到Eclipse中去,需要在build.gradle文件中加入如下配置
    apply plugin:'eclipse'
    然后运行gradle eclipse命令即可为你的项目生成相关的Eclipse文件
     
    多Java工程构建
    在Gradle安装目录的/samples/java/multiproject文件夹中有一个多工程的构建例子
    api工程通过生成一个jar文件为客户端提供XML webservice服务,webservice工程是一个会返回XML格式的web工程,shared工程的代码即要被api工程调用同时webservice工程也会调用,属于一个共享服务性工程。
    要构建一个多项目的Gradle工程,首先需要创建一个settings文件,这个settings文件需要跟所有Java项目位于同一级目录(如上图所示),在这个settings文件里你需要指定要构建哪些项目。这个settings文件的名字必须要
    叫做settings.gradle.
    settings文件内容
    include "shared","api","service:webservice","service:shared"
       在多数的多工程项目中,经常会出现一些工程之间共享的配置,在multiproject的例子里,把相同的配置定义在根工程(root project 类似于Maven的父工程概念)中,利用一种叫做配置注入(configuration injection
    在Gradle的理念里,根工程就相当于是一个容器,子工程就像这个容器中的一个个可以遍历的子元素,在这个“容器”下的项目被注入指定的配置。利用这种方式我们可以轻松的为所有的项目引入共同需要的依赖jar包。
       这种方式与maven parent project的概念大体一致。
    在multiproject这个sample中我们可以看到相应的配置注入的定义信息
    subprojects {  //定义所有子工程共同需要的配置
        apply plugin: "java" //定义所有子工程使用java插件
        apply plugin: "eclipse-wtp" //定义所有子工程使用Eclipse插件
    
         repositories {  //定义所有子工程的中央仓库
              mavenCentral()
         }
    
       dependencies { //定义所有子工程共同的依赖
           testCompile "junit:junit:4.11"
        }
     
       version = "1.0" //定义所有子工程的版本信息
    
       jar { //添加所有子工程打jar包时manifest文件的属性
          manifest.attributes provider: "gradle"
       }
    }
    

      

    在这里值得注意的是我的所有子工程都被“注入”了apply plugin: "java"的配置,这就意味着所有java plugin中的task,properties属性在每个子工程中都有
    所以你可以在根工程目录下运行gradle build命令来对所有子工程进行编译,测试,打包操作。
     
    项目之间的相互依赖
    在多项目工程的构建中,经常会存在一些项目之间依赖的情况,比如multiproject这个sample中api project就依赖了shared project。如果项目之间存在这个依赖关系,那么只需在相应的gradle.build文件中配置
    如下一句即可
    api/build.gradle
    dependencies {
       compile project(":shared")
    }
    

      

  • 相关阅读:
    strcpy 和 strnpy 区别
    js apply/call/caller/callee/bind使用方法与区别分析
    js中的this关键字详解
    Asp.Net_Get跟Post
    Asp.Net_Form验证跟授权
    Css_button样式对不齐
    Asp.Net_上传文件(ftp、webClient、webService)
    Asp.Net_优化
    Asp.Net_后台代码访问前台html标签
    Asp.Net_Ajax调用WebService返回Json前台获取循环解析
  • 原文地址:https://www.cnblogs.com/getto/p/3760221.html
Copyright © 2011-2022 走看看