刚到公司,接触的项目是SpringBoot + Gradle的项目,之前做过的项目是Maven的项目,所以要学习一下gradle,下面就先介绍一下如何使用idea创建Gradle + SpringBoot项目,然后再介绍一下如何配置gradle,我用的idea版本是2020.1版,jdk1.8,gradle是自己下载配置的,版本是4.10.2。
创建项目
- 选择file–>选择new–>选择–>project。
- 选择Spring Initializr -->Project SDK选择已经安装的jdk,这里选择1.8 -->其他默认,然后next.
- 这一步可以修改项目的名字和版本,语言等,但这里最主要的是要选择Gradle Project,然后点击next,如下
- 这里选择项目需要的相关依赖,当然,后续需要什么依赖也可以在配置文件中添加,我们这里选择Web中的Spring Web,然后点击next。
- 这里选择项目目录和填写项目的名字。点击finish就完成了。
- 然后idea就开始自动下载gradle了。下载有时很慢,而且会失败。值得注意的是4.新以上的版本5.x,6.x等等的高版本,已经将sourceSets.main.output.classesDir改成了 sourceSets.main.output.classesDirs,所以在配置时需要注意。
- 如果想要修改gradle配置,或者使用自己的gradle,可以点击file–>找到setting(mac版的idea是点击IntelliJ IDEA这几个字,在出现的下拉框中找到Preference,就是setting),然后点击Build Execution Deployment,找到Build Tools,然后找到Gradle,如下,Gradle user home是Gradle依赖库的位置,可以自定义,中间的一项打勾,然后Use Gradle from选择Specified Location,后面的选择你安装gradle的位置即可,然后点击Apply,然后点击ok。
- 随后idea开始自动下载依赖。
到这里整个项目的创建就结束了,接下来对gradle的配置进行一个讲解。maven转gradle如下:
maven
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.hngytobacco</groupId>
<artifactId>budget</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>budget</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.0.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<springfox.swagger2.version>2.8.0</springfox.swagger2.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Finchley.SR2</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.security.oauth.boot</groupId>
<artifactId>spring-security-oauth2-autoconfigure</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>${springfox.swagger2.version}</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>${springfox.swagger2.version}</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<executable>true</executable>
</configuration>
</plugin>
</plugins>
</build>
</project>
build.gradle
buildscript {
ext {
springBootVersion = "2.1.0.RELEASE"
}
repositories {
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
}
}
plugins {
id "java"
id "idea"
id "org.springframework.boot" version "2.1.0.RELEASE"
id "io.spring.dependency-management" version "1.0.6.RELEASE"
}
group "com.hngytobacco"
version "1.0-SNAPSHOT"
compileJava.options.encoding = "UTF-8"
compileTestJava.options.encoding = "UTF-8"
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
repositories {
mavenCentral()
}
ext {
springCloudVersion = "Finchley.SR2"
springfoxSwagger2Version = "2.8.0"
}
dependencyManagement {
imports {
mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
}
}
dependencies{
implementation "org.springframework.boot:spring-boot-starter-web"
implementation "org.springframework.boot:spring-boot-starter-data-jpa"
implementation "org.springframework.boot:spring-boot-starter-security"
implementation "org.springframework.boot:spring-boot-starter-actuator"
implementation "mysql:mysql-connector-java"
implementation "org.springframework.cloud:spring-cloud-starter-config"
implementation "org.springframework.security.oauth.boot:spring-security-oauth2-autoconfigure"
implementation "io.springfox:springfox-swagger2:${springfoxSwagger2Version}"
implementation "io.springfox:springfox-swagger-ui:${springfoxSwagger2Version}"
runtimeOnly "org.springframework.boot:spring-boot-devtools"
testImplementation "org.springframework.boot:spring-boot-starter-test"
testImplementation "org.springframework.security:spring-security-test"
testCompile group: "junit", name: "junit", version: "4.12"
}