<commit_before># 入门指南

Gogradle是[Gradle](https://gradle.org/)的一个插件。Gradle是一个使用Groovy作为DSL的自动化构建工具，允许用户通过自定义的构建脚本来完成构建工作。
大多数情况下，你无需了解Gradle本身，只需要阅读本文档即可。

## 准备工作

- 安装[JDK 8+](http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html)
  - 如果你安装了JetBrains系列的IDE（IntellijIDEA/Gogland/WebStorm/PhpStorm/PyCharm/RubyMine/CLion）之一，那么你可以利用其自带的JDK，而无需额外安装。详见[IDE支持](./ide-cn.md)
- 将**本项目**中的`gradle`目录、`gradlew`文件、`gradlew.bat`文件拷贝到**欲构建的Go语言项目**目录下。
- 在欲构建的Go语言项目下新建`build.gradle`构建脚本，内容如下：

```groovy
plugins {
    id 'com.github.blindpirate.gogradle' version '0.2.8'
}

golang {
    packagePath = 'your/package/path' // 欲构建项目的path
}
```
如果你之前使用的是glide/glock/godep/gom/gopm/govendor/gvt/gbvendor/trash之一，那么无需任何设置，Gogradle会自动读取这些包管理工具保存在项目目录中的依赖锁定文件。此外，可以令Gogradle生成自己的锁定文件`gogradle.lock`。一旦该文件生成，原先的包管理工具的依赖锁定文件就不会再生效，你可以删除之。详见[依赖锁定](#依赖锁定)一节。

## 离线使用Gogradle插件
本节的目的是为访问官方插件仓库https://plugins.gradle.org存在问题的小伙伴提供的workaround。若你在构建时没有遇到无法下载Gogradle插件的问题，请忽略本节。

- 移步[Gogradle Release](https://github.com/blindpirate/gogradle/releases)下载最新版本的jar包。
- 将上文的构建脚本中的

```
plugins {
    id 'com.github.blindpirate.gogradle' version '0.2.8'
}
```

替换为

```
buildscript {
    dependencies {
        classpath files('<path to the jar>')
    }
}

apply plugin: 'com.github.blindpirate.gogradle'

```

## 构建Go项目

进入项目目录，运行

```
./gradlew build # *nix

gradlew build # Windows
```

在下文中，`gradlew`命令将以统一的`gradlew <task>`形式给出，不再区分平台。

以上命令等价于在当前项目目录下运行`go build`，区别在于，Gogradle自动完成了依赖解析、安装等一系列过程。注意，Gogradle**不使用全局的`GOPATH`**，它会将所有的依赖安装在当前项目目录下并自动设置与构建相关的环境变量——这意味着构建是完全隔离的、可复现的。


## 测试Go项目

进入项目目录，运行 

```
gradlew test
```

测试指定文件：

```
gradlew test --tests main_test.go // 指定一个测试文件<commit_msg>Improve docs<commit_after># 入门指南

Gogradle是[Gradle](https://gradle.org/)的一个插件。Gradle是一个使用Groovy作为DSL的自动化构建工具，允许用户通过自定义的构建脚本来完成构建工作。
大多数情况下，你无需了解Gradle本身，只需要阅读本文档即可。

## 准备工作

- 安装[JDK 8+](http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html)
  - 如果你安装了JetBrains系列的IDE（IntellijIDEA/Gogland/WebStorm/PhpStorm/PyCharm/RubyMine/CLion）之一，那么你可以利用其自带的JDK，而无需额外安装。详见[IDE支持](./ide-cn.md)
- 将**本项目**中的`gradle`目录、`gradlew`文件、`gradlew.bat`文件拷贝到**欲构建的Go语言项目**目录下。
- 在欲构建的Go语言项目下新建`build.gradle`构建脚本，内容如下：

```groovy
plugins {
    id 'com.github.blindpirate.gogradle' version '0.2.8'
}

golang {
    packagePath = 'your/package/path' // 欲构建项目的path
}
```
如果你之前使用的是glide/glock/godep/gom/gopm/govendor/gvt/gbvendor/trash之一，那么无需任何设置，Gogradle会自动读取这些包管理工具保存在项目目录中的依赖锁定文件。此外，可以令Gogradle生成自己的锁定文件`gogradle.lock`。一旦该文件生成，原先的包管理工具的依赖锁定文件就不会再生效，你可以删除之。详见[依赖锁定](#依赖锁定)一节。

## 离线使用Gogradle插件
本节的目的是为访问官方插件仓库https://plugins.gradle.org存在问题的小伙伴提供的workaround。若你在构建时没有遇到无法下载Gogradle插件的问题，请忽略本节。

- 移步[Gogradle Release](https://github.com/blindpirate/gogradle/releases)下载最新版本的jar包。
- 将构建脚本改为

build.gradle:

```
buildscript {
    dependencies {
        classpath files('<path to the jar>')
    }
}

apply plugin: 'com.github.blindpirate.gogradle'

golang {
    packagePath = 'your/package/path' // 欲构建项目的path
}

```

## 构建Go项目

进入项目目录，运行

```
./gradlew build # *nix

gradlew build # Windows
```

在下文中，`gradlew`命令将以统一的`gradlew <task>`形式给出，不再区分平台。

以上命令等价于在当前项目目录下运行`go build`，区别在于，Gogradle自动完成了依赖解析、安装等一系列过程。注意，Gogradle**不使用全局的`GOPATH`**，它会将所有的依赖安装在当前项目目录下并自动设置与构建相关的环境变量——这意味着构建是完全隔离的、可复现的。


## 测试Go项目

进入项目目录，运行 

```
gradlew test
```

测试指定文件：

```
gradlew test --tests main_test.go // 指定一个测试文件
{'fraction_non_alphanumeric': 0.1501766784452297, 'fraction_numerical': 0.007950530035335688, 'mean_word_length': 6.368763557483731, 'pattern_counts': {'":': 0, '<': 7, '<?xml version=': 0, '>': 7, 'https://': 6, 'lorem ipsum': 0, 'www.': 2, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 4, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '783828', 'n_tokens_mistral': 2208, 'n_tokens_neox': 2335, 'n_words': 127}