当前位置:   article > 正文

使用Gradle构建Spring Boot 2应用程序_gradle 创建springboot2

gradle 创建springboot2

本指南显示了如何为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任务的更多信息。

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

  1. $ mkdir gradle-spring-boot-project
  2. $ cd gradle-spring-boot-project
  3. $ gradle init --type java-application
  4. > Task :wrapper
  5. Select build script DSL:
  6. 1: Groovy
  7. 2: Kotlin
  8. Enter selection (default: Groovy) [1..2]
  9. Select test framework:
  10. 1: JUnit 4
  11. 2: TestNG
  12. 3: Spock
  13. 4: JUnit Jupiter
  14. Enter selection (default: JUnit 4) [1..4]
  15. Project name (default: gradle-spring-boot-project):
  16. Source package (default: gradle.spring.boot.project):
  17. > Task :init
  18. Get more help with your project: https://docs.gradle.org/6.0.1/userguide/tutorial_java_projects.html
  19. BUILD SUCCESSFUL
  20. 2 actionable tasks: 2 executed

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

  1. gradle-spring-boot-project
  2. ├── build.gradle
  3. ├── gradle
  4. │ └── wrapper
  5. │ ├── gradle-wrapper.jar
  6. │ └── gradle-wrapper.properties
  7. ├── gradlew
  8. ├── gradlew.bat
  9. ├── settings.gradle
  10. └── src
  11. ├── main
  12. │ └── java
  13. │ └── App.java
  14. └── test
  15. └── java
  16. └── AppTest.java

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

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

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

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

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

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

要定义依赖关系dependencies,请如下所示修改块。此代码片段将使用指定的Spring Boot版本将Spring Boot BOM文件添加为第一个依赖项。其他依赖项不需要具有特定版本,因为这些依赖项是在BOM表文件中隐式定义的。
build.gradle
  1. dependencies {
  2. implementation 'org.springframework.boot:spring-boot-dependencies:2.0.5.RELEASE'
  3. implementation 'org.springframework.boot:spring-boot-starter-web'
  4. testImplementation 'org.springframework.boot:spring-boot-starter-test'
  5. components {
  6. withModule('org.springframework:spring-beans') {
  7. allVariants {
  8. withDependencyConstraints {
  9. // Need to patch constraints because snakeyaml is an optional dependency
  10. it.findAll { it.name == 'snakeyaml' }.each { it.version { strictly '1.19' } }
  11. }
  12. }
  13. }
  14. }
  15. }

为了符合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
  1. package hello;
  2. import org.springframework.boot.SpringApplication;
  3. import org.springframework.boot.autoconfigure.SpringBootApplication;
  4. @SpringBootApplication
  5. public class App {
  6. public static void main(String[] args) {
  7. SpringApplication.run(App.class, args);
  8. }
  9. }
HelloGradleController.java
  1. package hello;
  2. import org.springframework.web.bind.annotation.GetMapping;
  3. import org.springframework.web.bind.annotation.RestController;
  4. @RestController("/")
  5. public class HelloGradleController {
  6. @GetMapping
  7. public String helloGradle() {
  8. return "Hello Gradle!";
  9. }
  10. }

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

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

AppTest.java
  1. package hello;
  2. import org.junit.Test;
  3. import org.junit.runner.RunWith;
  4. import org.springframework.beans.factory.annotation.Autowired;
  5. import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
  6. import org.springframework.boot.test.context.SpringBootTest;
  7. import org.springframework.test.context.junit4.SpringRunner;
  8. import org.springframework.test.web.servlet.MockMvc;
  9. import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
  10. import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
  11. import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
  12. @RunWith(SpringRunner.class)
  13. @SpringBootTest(classes = App.class)
  14. @AutoConfigureMockMvc
  15. public class AppTest {
  16. @Autowired
  17. private MockMvc mvc;
  18. @Test
  19. public void helloGradle() throws Exception {
  20. mvc.perform(get("/"))
  21. .andExpect(status().isOk())
  22. .andExpect(content().string("Hello Gradle!"));
  23. }
  24. }

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

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

build.gradle
  1. bootJar {
  2. mainClassName = 'hello.App'
  3. }

构建并运行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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/305906
推荐阅读
相关标签
  

闽ICP备14008679号