我稍微查了一下Gradle并阅读了通过Spring Initializr生成的build.gradle

使用Spring Boot和MySQL来实现一个简单的Web REST API服务器- Qiita

概述

我想要阅读由Spring Initializr自动生成的build.gradle文件。
为了阅读该文件,我稍微查阅了一下Gradle。

参考文献

Gradle构建工具
Gradle用户指南

Gradle是什么?

undefined

首章 引言

Gradle是Java (JVM) 环境中的构建系统。

使用替代前的Maven。
负责导入依赖库、编译、生成jar文件以及执行测试等各种任务。

安装

如果您正在使用IntelliJ,它将与其一同安装。
您也可以通过Homebrew进行安装。
在我的环境中,它就在这里。

% ~/.gradle/wrapper/dists/gradle-4.5.1-bin/a5vbgfvpwtoqz8v2cdivxz28k/gradle-4.5.1/bin/gradle -v  

------------------------------------------------------------
Gradle 4.5.1
------------------------------------------------------------

Build time:   2018-02-05 13:22:49 UTC
Revision:     37007e1c012001ff09973e0bd095139239ecd3b3

Groovy:       2.4.12
Ant:          Apache Ant(TM) version 1.9.9 compiled on February 2 2017
JVM:          1.8.0_162 (Oracle Corporation 25.162-b12)
OS:           Mac OS X 10.13.3 x86_64

构建.gradle

基本上,要编辑这个文件。就像是pom.xml一样。
这是由项目创建自动生成的一部分。

buildscript {
    ext {
        springBootVersion = '2.0.2.RELEASE'
    }
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
    }
}

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'

group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = 1.8

repositories {
    mavenCentral()
}


dependencies {
    compile('org.springframework.boot:spring-boot-starter-data-jpa')
    compile('org.springframework.boot:spring-boot-starter-web')
    runtime('mysql:mysql-connector-java')
    compileOnly('org.projectlombok:lombok')
    testCompile('org.springframework.boot:spring-boot-starter-test')
}

逐一查看从上到下写着什么。

构建脚本

用于解决依存关系的gradle.build文件本身的依赖解析代码块。
似乎Spring Boot生成的Gradle项目会使用Spring Boot的Gradle插件。

扩展

定义变量的地方。

仓库

如果指定依存库的存储库。
正在指定Maven的中央存储库。
指定URL的方法如下。

repositories {
    maven {
        url 'https://repo.spring.io/libs-snapshot'
    }
}

第51章 管理依存关系

依赖

使用Spring Boot的Gradle插件,指定了图书馆。

申请

声明插件的位置。
这两个插件都依赖于Spring Boot。

apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'

org.springframework.boot – SpringBoot

这个被添加了。

Application tasks
-----------------
bootRun - Runs this project as a Spring Boot application.

执行应用程序启动的任务已经完成。现在可以启动Spring Boot应用程序了。

依赖管理(io.spring.dependency-management)

这家伙看起来很厉害。
这个插件可以重现Maven的BOM(物料清单)机制。

※物料清单 (wù

每个库都可以定义其自身的依赖关系机制。
总的来说,如果有想要使用的库,只需编写该库及其依赖关系清单,即可使用。

很遗憾,Gradle中没有这个机制。
使用这个插件就可以实现。

然而,这次的build.gradle文件中并未使用BOM。

在实际使用时,可以使用以下类似的代码块。
以spring-cloud-stream为例。

dependencyManagement {
     imports {
          mavenBom 'org.springframework.cloud:spring-cloud-stream-dependencies:Fishtown.BUILD-SNAPSHOT'
     }
}

成果物相关

版本之类的将在这里进行操作
下面的是jdk的版本

group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = 1.8

代码仓库

与 buildscript 相同的那个

依赖

写入依赖库。
在开头被称为“配置”的。
第23章,Java插件。

名前拡張元利用するタスク意味compile-compileJavaコンパイル時の依存関係runtimecompile-実行時の依存関係testCompilecompilecompileTestJavaテストのコンパイル時の追加依存関係testRuntimeruntime, testCompiletestテストの実行時の追加依存関係archives-uploadArchivesこのプロジェクトが生成するアーティファクト(jarファイルなど)defaultruntime-このプロジェクトに依存するプロジェクトが使用する、デフォルトのコンフィグレーション。アーティファクトと、このプロジェクトが実行時に要求する依存関係が含まれる。
undefined

书写方式有很多其他种类。

dependencies {
    runtime group: 'org.springframework', name: 'spring-core', version: '2.5'
    runtime 'org.springframework:spring-core:2.5',
            'org.springframework:spring-aop:2.5'
    runtime(
        [group: 'org.springframework', name: 'spring-core', version: '2.5'],
        [group: 'org.springframework', name: 'spring-aop', version: '2.5']
    )
    runtime('org.hibernate:hibernate:3.0.5') {
        transitive = true
    }
    runtime group: 'org.hibernate', name: 'hibernate', version: '3.0.5', transitive: true
    runtime(group: 'org.hibernate', name: 'hibernate', version: '3.0.5') {
        transitive = true
    }
}

赠品

你好世界

这个家伙毕竟只是个脚本而已。

% cat build.gradle
task hello {
    doLast {
        println 'Hello world!'
    }
}

% gradle hello 

> Task :hello
Hello world!


BUILD SUCCESSFUL in 0s
1 actionable task: 1 executed

广告
将在 10 秒后关闭
bannerAds