使用Gradle构建Spring Boot 2应用程序

本指南显示了如何为Spring Boot 2.0构建新的Gradle项目。首先,我们展示一些Spring Boot及其Gradle插件的值得注意的功能。接下来,我们将设置Gradle项目,应用Spring Boot插件,使用Gradle BOM支持来定义依赖项并创建示例项目。

值得注意的Spring Boot 2功能

当Spring Boot使用Spring Framework 5.x时,由于支持Java 9,最低Java版本已提高到8。在此版本中,Spring还包括对Kotlin 1.2.x的支持。

除此之外,它现在完全支持Reactive Spring,您可以使用它来构建响应式应用程序。Spring Boot提供的整个自动配置机制也已经通过MongoDB,Redis等其他一些新的响应版本得到了丰富。

Spring Boot Gradle插件经过重大改进,具有以下改进:

  • 为了构建可执行的jar和war,该bootRepackage任务已分别替换为bootJarbootWar

  • 该插件本身不再自动应用Spring Dependency Management插件。相反,它确实对已应用spring-boot-dependenciesBOM 并配置有BOM 的Spring Dependency Management插件做出了反应(物料清单。在本文后面的部分中,我们将详细介绍BOM支持)。

你需要什么

  • 约12分钟

  • 文本编辑器或IDE

  • Java开发套件(JDK),版本1.8或更高版本

  • 一个Gradle,版本4.6或更高

初始化Gradle项目

首先,我们需要初始化Gradle项目。为此,我们使用Gradle的init任务来创建带有空构建文件的模板项目。生成的项目包括开箱即用的Gradle包装器,以便您可以轻松地与未在本地安装Gradle的用户共享该项目。它还添加了默认源目录,测试依赖项和JCenter作为默认依赖项存储库。请查看其文档以了解有关该init任务的更多信息。

首先,我们需要在主目录中创建示例项目文件夹,并初始化项目:

$ mkdir gradle-spring-boot-project
$ cd gradle-spring-boot-project
$ gradle init --type java-application
> Task :wrapper

Select build script DSL:
  1: Groovy
  2: Kotlin
Enter selection (default: Groovy) [1..2]

Select test framework:
  1: JUnit 4
  2: TestNG
  3: Spock
  4: JUnit Jupiter
Enter selection (default: JUnit 4) [1..4]

Project name (default: gradle-spring-boot-project):

Source package (default: gradle.spring.boot.project):


> Task :init
Get more help with your project: https://docs.gradle.org/6.0.1/userguide/tutorial_java_projects.html

BUILD SUCCESSFUL
2 actionable tasks: 2 executed

生成的项目具有以下结构:

gradle-spring-boot-project
├── build.gradle
├── gradle
│   └── wrapper
│       ├── gradle-wrapper.jar
│       └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── settings.gradle
└── src
    ├── main
    │   └── java
    │       └── App.java
    └── test
        └── java
            └── AppTest.java

接下来,我们需要应用Spring Boot插件并定义依赖项。

应用Spring Boot插件并配置依赖项

Spring提供了一个独立的Spring Boot Gradle插件,该插件添加了一些任务和配置,以简化基于Spring Boot的项目的工作。首先,我们首先需要应用插件。为此,打开build.gradle文件并修改plugin块,使其看起来像以下片段:

build.gradle
plugins {
    id 'java'
    id 'org.springframework.boot' version '2.0.5.RELEASE'
    id 'io.spring.dependency-management' version '1.0.7.RELEASE'
}

接下来,由于我们没有使用Spring的依赖管理插件,因此需要添加编译和运行示例所需的依赖。为此,我们使用了Gradle的BOM支持,并加载了Spring Boot BOM文件,以便能够使用正确的版本解析所有必需的依赖项。

如果您想了解有关Gradle BOM支持的更多信息,请访问此页面

要定义依赖关系dependencies,请如下所示修改块。此代码片段将使用指定的Spring Boot版本将Spring Boot BOM文件添加为第一个依赖项。其他依赖项不需要具有特定版本,因为这些依赖项是在BOM表文件中隐式定义的。
build.gradle
dependencies {
    implementation 'org.springframework.boot:spring-boot-dependencies:2.0.5.RELEASE'
    implementation 'org.springframework.boot:spring-boot-starter-web'

    testImplementation 'org.springframework.boot:spring-boot-starter-test'

    components {
        withModule('org.springframework:spring-beans') {
            allVariants {
                withDependencyConstraints {
                    // Need to patch constraints because snakeyaml is an optional dependency
                    it.findAll { it.name == 'snakeyaml' }.each { it.version { strictly '1.19' } }
                }
            }
        }
    }
}

为了符合Spring Boot BOM,该components块必须严格使用snakeyaml带有版本的依赖,1.19因为该spring-beans依赖具有版本1.20作为传递性依赖。

如果使用5.0之前的Gradle版本,则需要通过settings.gradle在项目根目录中的文件中添加以下行来启用此功能:

settings.gradle
 

如果您想探索所使用的依赖项的版本,包括哪些传递性依赖项,或者查看您在哪里有冲突,可以在构建扫描中找到此信息。

以下屏幕截图显示了构建扫描的“依赖项”部分的示例:

创建一个“ Hello Gradle”示例应用程序

对于示例应用程序,我们创建一个简单的“ Hello Gradle”应用程序。首先,我们需要将AppAppTest类移动到一个hello包中,以方便进行Spring的组件扫描。为此,创建src/main/java/hellosrc/test/java/hello目录,将各自的类移动到文件夹中。

接下来,修改文件夹中的App类,src/main/java/hello并用以下内容替换其内容:

App.java
package hello;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class App {

    public static void main(String[] args) {
        SpringApplication.run(App.class, args);
    }

}
HelloGradleController.java
package hello;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController("/")
public class HelloGradleController {

    @GetMapping
    public String helloGradle() {
        return "Hello Gradle!";
    }

}

在以上代码段中,我们创建了一个新的Spring Boot应用程序,当在应用程序的根路径上处理请求时,HelloGradleController它将返回Hello Gradle!一个GET

要测试此功能,我们需要创建一个集成测试。为此,请修改文件夹中的AppTest类,src/test/java/hello并用以下内容替换其内容:

AppTest.java
package hello;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.servlet.MockMvc;

import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;

@RunWith(SpringRunner.class)
@SpringBootTest(classes = App.class)
@AutoConfigureMockMvc
public class AppTest {

    @Autowired
    private MockMvc mvc;

    @Test
    public void helloGradle() throws Exception {
        mvc.perform(get("/"))
            .andExpect(status().isOk())
            .andExpect(content().string("Hello Gradle!"));
    }

}

helloGradle测试方法旋转起来的App春天启动应用程序,并做了当断言返回的内容GET的根路径上的请求。

最后一步,我们需要为Spring Boot jar文件定义主类名称。为此,我们需要mainClassNamebootJar配置闭包上定义属性。将以下代码段添加到中build.gradle,然后我们就可以运行Spring Boot应用程序了。

build.gradle
bootJar {
    mainClassName = 'hello.App'
}

构建并运行Spring Boot应用程序

要构建可执行jar,可以执行以下命令:

$ ./gradlew bootJar

可执行jar位于build/libs目录中,您可以通过执行以下命令来运行它:

$ java -jar build/libs/gradle-spring-boot-project.jar

运行应用程序的另一种方法是通过执行以下Gradle命令:

$ ./gradlew bootRun

该命令将8080直接在默认端口上运行Spring Boot应用程序。成功启动后,您可以打开浏览器并访问http://localhost:8080,并且应该Hello Gradle!在浏览器窗口中看到该消息。

从现有的Spring Boot 1.5项目迁移

如果您已经有一个1.5.x Spring Boot项目,并且想要迁移到更新的2.x版本,则可以遵循本指南。请仔细阅读升级说明,以成功升级到最新的Spring Boot Gradle插件。

下一步

既然您已经知道了新的Spring Boot Gradle插件的基础知识,就可以阅读其文档以获取更多详细信息。

如果您对构建扫描以及内部构建的更多度量标准和工具感兴趣,还请查看Gradle Enterprise

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值