您当前的位置: 首页 >  gradle

cuiyaonan2000

暂无认证

  • 0浏览

    0关注

    248博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Using Of Gradle

cuiyaonan2000 发布时间:2021-09-06 14:30:12 ,浏览量:0

序言

基于官网整理下Gradle的使用.使用过maven的话会很容易掌握,多用一段时间就熟悉了.

另外很多的参数信息配置都是基于插件的,你引用不同的插件就会有不同的参数设置.其实最多的工作量就是根据插件来配置参数信息cuiyaonan2000@163.com

官网地址:https://www.w3cschool.cn/gradle/3miy1htt.html

gradle的构建过程中的几个关键词:

  1. project :  gradle的目标结果就是project,project在java中对应jar,war
  2. task: task即字面意思任务,构建project为jar即为一个task
  3. plugin: 即task的实际执行者.插件就是 Gradle 的扩展,简而言之就是为你添加一些非常有用的默认配置。Gradle 自带了很多插件,并且你也可以很容易的编写和分享自己的插件.

配置环境
  • 运行 gradle 必须将 GRADLE_HOME/bin 加入到你的 PATH 环境变量中。

  • Gradle 运行时的 JVM 参数可以通过 GRADLE_OPTS 或 JAVA_OPTS 来设置.这些参数将会同时生效。 JAVA_OPTS 设置的参数将会同其它 JAVA 应用共享,一个典型的例子是可以在 JAVA_OPTS 中设置代理和 GRADLE_OPTS 设置内存参数。同时这些参数也可以在 gradle 或者 gradlew 脚本文件的开头进行设置。
  • gradle -v  用来验证是否配置环境是否成功

Java插件

java插件即包含了多个任务,常用的任务如下:

  1. build:   相当于maven的package.
  2. clean:   删除 build 目录以及所有构建完成的文件。
  3. assemble:   编译并打包 jar 文件,但不会执行单元测试。一些其他插件可能会增强这个任务的功能。例如,如果采用了 War 插件,这个任务便会为你的项目打出 War 包。
  4. check:  编译并测试代码。一些其他插件也可能会增强这个任务的功能。例如,如果采用了 Code-quality 插件,这个任务会额外执行 Checkstyle。
  5. uploadArchives : 用于上传jar,根据配置将打好的jar上传到本地仓库,或者远程仓库

build是多个任务的串序执行如下所示:

Output of gradle build
> gradle build
:compileJava
:processResources
:classes
:jar
:assemble
:compileTestJava
:processTestResources
:testClasses
:test
:check
:build
BUILD SUCCESSFUL
Total time: 1 secs

同时java插件的构建默认的打包目录如下所示:

Gradle 默认会从 src/main/java 搜寻打包源码,在 src/test/java 下搜寻测试源码。并且 src/main/resources 下的所有文件按都会被打包,所有 src/test/resources 下的文件 都会被添加到类路径用以执行测试。所有文件都输出到 build 下,打包的文件输出到 build/libs 下。

project  
    +build  
    +src/main/java  
    +src/main/resources  
    +src/test/java  
    +src/test/resources  

build.gradle
//引用java插件
apply plugin: 'java'

//需要打包 War 文件,需要在脚本中使用 War plugin:
apply plugin: 'war'


//引用eclipse插件
apply plugin: 'eclipse'

//设置java插件的的jdk版本
sourceCompatibility = 1.5

//如下的是为java插件设置一些属性到manifest中
version = '1.0'
jar {
    manifest {
        attributes 'Implementation-Title': 'Gradle Quickstart', 'Implementation-Version': version
    }
}

//设置jar包和插件拉取的仓库,如下的是默认maven的中央仓库
repositories {

  //默认maven的中央仓库
  mavenCentral()

  //引用私有的maven仓库
  maven {
        url "http://repo.mycompany.com/maven2"
  }

 //设置本地的仓库
 ivy { // URL can refer to a local directory
        url "../local-repo"
 }
}


//这里添加工程需要的jar和对应的版本.
dependencies {
    compile group: 'commons-collections', name: 'commons-collections', version: '3.2'
    testCompile group: 'junit', name: 'junit', version: '4.+'
    
    //如下标识引入Hibernate-core.3.6.7.final.jar
    compile group: 'org.hibernate', name: 'hibernate-core', version: '3.6.7.Final'

    //同时也可以简写成如下的格式
    compile 'org.hibernate:hibernate-core:3.6.7.Final'


}


//这里是系统属性,具体怎么用还带继续查看
test {
    systemProperties 'property': 'value'
}


//将该工程发布到本地的仓库
uploadArchives {
    repositories {
       flatDir {
           dirs 'repos'
       }
    }
}

//将该工程发布到ivh仓库
uploadArchives {
    repositories {
        ivy {
            credentials {
                username "username"
                password "pw"
            }
            url "http://repo.mycompany.com"
        }
    }
}

//将该工程发布到maven仓库
//发布到 Maven 仓库你需要 Maven 插件的支持
apply plugin: 'maven'
uploadArchives {
    repositories {
        mavenDeployer {
            repository(url: "file://localhost/tmp/myRepo/")
        }
    }
}



//如果该工程是个工程集合,子工程可以的一些共有信息可以写在父级工程的 build.gradle
//如下表示子工程的内容设置地方
subprojects {
    apply plugin: 'java'
    apply plugin: 'eclipse-wtp'
    repositories {
       mavenCentral()
    }
    dependencies {
        testCompile 'junit:junit:4.11'
    }
    version = '1.0'
    jar {
        manifest.attributes provider: 'gradle'
    }
}

dependencies 应用的jar包可选择作用生效的阶段

  1. compile: 编译范围依赖在所有的 classpath 中可用,同时它们也会被打包
  2. runtime: runtime 依赖在运行和测试系统的时候需要,但在编译的时候不需要。比如,你可能在编译的时候只需要 JDBC API JAR,而只有在运行的时候才需要 JDBC 驱动实现
  3. testCompile: 测试期编译需要的附加依赖
  4. testRuntime: 测试运行期需要

settings.gradle

该文件主要用于构建多个包的层级设置,即标识该工程中包含了多个少个子工程.

//标识该目录下有4个工程分别是 shared,api,service:webservice,service:shared
include "shared", "api", "services:webservice", "services:shared"

关注
打赏
1638267374
查看更多评论
立即登录/注册

微信扫码登录

0.0399s