争渡

Be my self

那些不明白
还是不明白
我还是不会
为了谁失去自由自在
我想你明白
我想你明白
  menu
55 文章
0 浏览
0 当前访客
ღゝ◡╹)ノ❤️

Gradle

  

  

入门

  代码打包编译工具

安装

 1# 安装
 2brew install gradle
 3# 查看路径
 4brew info gradle
 5
 6gradle: stable 4.10.2
 7Open-source build automation tool based on the Groovy and Kotlin DSL
 8https://www.gradle.org/
 9/usr/local/Cellar/gradle/4.10.2 (203 files, 83.7MB) *
10  Built from source on 2018-09-30 at 21:09:13
11From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/gradle.rb
12==> Requirements
13Required: java >= 1.7 ✔
14==> Options
15--with-all
16	Installs Javadoc, examples, and source in addition to the binaries
17==> Analytics
18install: 35,101 (30 days), 139,707 (90 days), 564,602 (365 days)
19install_on_request: 33,414 (30 days), 127,350 (90 days), 492,707 (365 days)
20build_error: 0 (30 days)

  路径为:/usr/local/Cellar/gradle/4.10.2/libexec

初始化项目

1mkdir demo
2cd demo
3gradle init

  会生成目录

1├── build.gradle  :当前项目构建脚本
2├── gradle
3│   └── wrapper
4│       ├── gradle-wrapper.jar   :gradle包装的jar包
5│       └── gradle-wrapper.properties   :jar包配置文件
6├── gradlew  :linux 脚本
7├── gradlew.bat  :windows脚本
8└── settings.gradle  :用于配置Gradle构建的Gradle设置脚本

开始一项任务

  1.创建 src 目录
2.建立 myfile.txt 并写入 hello world 3.在 build 中写入脚本

1task copy(type: Copy, group: "Custom", description: "Copies sources to the dest directory") {
2    from "src"
3    into "dest"
4}

  运行 copy

1gradle copy

  此时多出了 dest 文件夹和 myfile 文件

使用插件

  GRADLE 插件  库

 1//  加入插件
 2plugins {
 3    id "base"
 4}
 5
 6//  写入脚本
 7task zip(type: Zip, group: "Archive", description: "Archives sources in a zip file") {
 8    from "src"
 9    setArchiveName "basic-demo-1.0.zip"
10}

  执行任务

1gradle zip

  任务执行结束多出了 build 目录下面有 basic-demo-1.0.zip,这是压缩好的 src 目录

查看 gradle 命令

 1gradle tasks
 2
 3
 4
 5> Task :tasks
 6
 7------------------------------------------------------------
 8All tasks runnable from root project
 9------------------------------------------------------------
10
11Archive tasks 归档任务(zip分组group)
12-------------
13zip - 归档(自己写的描述)
14
15Build tasks 构建任务
16-----------
17assemble - 汇总项目输出
18build - 打包并测试项目
19clean - 删除打包文件
20
21Build Setup tasks 构建安装任务
22-----------------
23init - 初始化gradle项目
24wrapper - 生成gradle包文件
25
26Custom tasks 自定义任务
27------------
28copy - Copies sources to the dest directory(第一个任务自己写的描述)
29
30Help tasks
31----------
32buildEnvironment  - 显示在根项目中声明的所有buildscript依赖项。
33components  - 显示根项目生成的组件。
34dependencies  - 显示在根项目中声明的所有依赖项。
35dependencyInsight  - 显示对根项目中特定依赖项dependentComponents  - 显示根项目中组件的相关组件。
36help  - 显示帮助消息。
37model  - 显示根项目的配置模型。
38projects  - 显示根项目的子项目。
39properties  - 显示根项目的属性。
40tasks  - 显示可从根项目运行的任务。
41
42Verification tasks
43------------------
44check - 运行所有检查项
45
46Rules
47-----
48Pattern: clean<TaskName>: 清除任务的输出文件。
49Pattern: build<ConfigurationName>:  组装配置。 upload<ConfigurationName>: 组装并上传属于配置。
50
51To see all tasks and more detail, run gradle tasks --all
52
53To see more detail about a task, run gradle help --task <task>
54
55BUILD SUCCESSFUL in 0s
561 actionable task: 1 executed

构建 Java 应用程序

初始化项目

1gradle init --type <name>
2
3name可选项:
4java-application
5java-library
6scala-library
7groovy-library
8basic

  选用 java-application

1mkdir gradle-java-demo
2cd gradle-java-demo
3gradle init --type java-application

项目结构

 1├── build.gradle 构建脚本
 2├── gradle
 3│   └── wrapper
 4│       ├── gradle-wrapper.jar 构建包
 5│       └── gradle-wrapper.properties 构建包配置
 6├── gradlew linux构建脚本
 7├── gradlew.bat windows构建脚本
 8├── settings.gradle 项目设置(主要有项目名称)
 9└── src
10    ├── main
11    │   └── java
12    │       └── App.java 主类
13    └── test
14        └── java
15            └── AppTest.java 测试类

脚本结构

 1//  插件
 2plugins {
 3    //  java插件
 4    id 'java'
 5    //  application插件
 6    id 'application'
 7}
 8
 9//  入口
10//  具有“main”方法的类(由Application插件使用)
11mainClassName = 'App'
12
13//  项目依赖
14dependencies {
15    compile 'com.google.guava:guava:23.0'
16    //  测试依赖
17    testCompile 'junit:junit:4.12'
18}
19
20//  公共依赖库
21repositories {
22    jcenter()
23}
24

构建项目

 1gradle build
 2
 3$ ./gradlew build
 4> Task :compileJava
 5> Task :processResources NO-SOURCE
 6> Task :classes
 7> Task :jar
 8> Task :startScripts
 9> Task :distTar
10> Task :distZip
11> Task :assemble
12> Task :compileTestJava
13> Task :processTestResources NO-SOURCE
14> Task :testClasses
15
16> Task :test
17
18> Task :check
19> Task :build
20
21BUILD SUCCESSFUL

构建 Java 库

初始化项目

1# 初始化项目
2mkdir gradle-java-library
3cd gradle-java-library
4gradle init --type java-library

目录结构

 1.
 2├── build.gradle 构建脚本
 3├── gradle
 4│   └── wrapper
 5│       ├── gradle-wrapper.jar 构建包
 6│       └── gradle-wrapper.properties 构建包配置
 7├── gradlew 构建shell命令
 8├── gradlew.bat 构建批处理命令
 9├── settings.gradle 项目设置
10└── src
11    ├── main
12    │   └── java
13    │       └── Library.java
14    └── test
15        └── java
16            └── LibraryTest.java

脚本结构

 1//  插件
 2plugins {
 3    //  这是java-base插件的扩展,并添加了用于编译Java源代码的其他任务
 4    id 'java-library'
 5}
 6
 7//  依赖
 8dependencies {
 9    //  公共依赖存储库
10    api 'org.apache.commons:commons-math3:3.6.1'
11    //  依赖于google包
12    implementation 'com.google.guava:guava:23.0'
13    //  测试依赖包
14    testImplementation 'junit:junit:4.12'
15}
16
17//  公共依赖库
18repositories {
19    jcenter()
20}

打包 jar

1gradle build

自定义 jar 包信息

1//  版本
2version = '0.1.0'

注释文档

1gradle javadoc

  生成文档在 build/doc 目录下

Java 项目依赖  管理

解析脚本

 1apply plugin: 'java-library'
 2
 3repositories {
 4    mavenCentral()
 5}
 6
 7dependencies {
 8    implementation 'org.hibernate:hibernate-core:3.6.7.Final'
 9    api 'com.google.guava:guava:23.0'
10    testImplementation 'junit:junit:4.+'
11}

  1.implementation 说明项目依赖了 hibernate3.6.7

2.testImplementation 说明项目测试要用 junit > 4.0 版本
3.所有的依赖会在 repositories 中去查找

使用本地仓库 url

1  repositories {
2    ivy {
3        // 本地路径
4        url "../local-repo"
5    }
6}

发布 library

创建任务

1task myJar(type: Jar)
2
3artifacts {
4    archives myJar
5}

文件

1def someFile = file('build/somefile.txt')
2
3artifacts {
4    archives someFile
5}

自定义

 1task myTask(type:  MyTaskType) {
 2    destFile = file('build/somefile.txt')
 3}
 4
 5artifacts {
 6    archives(myTask.destFile) {
 7        name 'my-artifact'
 8        type 'text'
 9        builtBy myTask
10    }
11}

映射

 1task generate(type:  MyTaskType) {
 2    destFile = file('build/somefile.txt')
 3}
 4
 5artifacts {
 6    // 映射
 7    archives file: generate.destFile,
 8    name: 'my-artifact',
 9    type: 'text',
10    builtBy: generate
11}

发布

 1repositories {
 2    flatDir {
 3        name "fileRepo"
 4        dirs "repo"
 5    }
 6}
 7
 8uploadArchives {
 9    repositories {
10        // 文件
11        add project.repositories.fileRepo
12        ivy {
13            // 自定义仓库用户名密码
14            credentials {
15                username "username"
16                password "pw"
17            }
18            // url
19            url "http://repo.mycompany.com"
20        }
21    }
22}

用户手册

  Gradle 用户手册


标题:Gradle
作者:fe
地址:https://blog.eiyouhe.com/articles/2019/08/19/1566176857184.html