Cloud9 + Gradle + Groovy是一种用来构建Spring Boot应用程序的方法

首先

上次进行了IDE环境的设置。
这次将使用设置好的环境,在Gradle + Kotlin上运行Spring Boot应用程序。

根据Spring Boot文档进行参考,并尝试使用最新版本的库。

另外,执行环境如下所示。

$ gradle -v

------------------------------------------------------------
Gradle 6.0.1
------------------------------------------------------------

Build time:   2019-11-18 20:25:01 UTC
Revision:     fad121066a68c4701acd362daf4287a7c309a0f5

Kotlin:       1.3.50
Groovy:       2.5.8
Ant:          Apache Ant(TM) version 1.10.7 compiled on September 1 2019
JVM:          11.0.3 (Amazon.com Inc. 11.0.3+7-LTS)
OS:           Linux 4.14.152-98.182.amzn1.x86_64 amd64

1. 创建Gradle项目

首先,进入项目目录,并执行以下命令。

本次我们将使用Groovy作为构建脚本的DSL,并根据需要选择任意的测试框架。

$ gradle init  --type java-application

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

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

Project name (default: test-app): test-app
Source package (default: test.app): test 

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

BUILD SUCCESSFUL in 4m 9s
2 actionable tasks: 2 executed

2. 编辑 build.gradle

我会遵循指南进行改写。由于不使用build scan,我将删除不必要的内容。

    Plugin
plugins {
    // Apply the java plugin to add support for Java
    id 'java'
    id 'org.springframework.boot' version '2.2.2.RELEASE'
    id 'io.spring.dependency-management' version '1.0.8.RELEASE'
}
    Dependencies
dependencies {
    // This dependency is used by the application.
    implementation 'org.springframework.boot:spring-boot-dependencies:2.2.2.RELEASE'
    implementation 'org.springframework.boot:spring-boot-starter-web'

    // Use JUnit test framework
    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' } }
                }
            }
        }
    }
}
    • application

 

    • 不要なため、削除します。

 

    • bootJar

 

    最終行に追加します。
bootJar {
    mainClassName = 'test.App'
}

3. 将写入Spring Boot应用程序。

    App.java
package test;

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 test;

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!";
    }

}
    AppTest.java
package test;

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!"));
    }

}

4. 应用程序的构建

请使用以下命令进行构建。等待依赖库完全准备可能需要一些时间。

$ ./gradlew bootJar

5. 检查应用程序的启动和运行

当使用”gradlew boorRun”命令进行启动时,应用程序将开始运行。

$ ./gradlew bootRun

> Task :bootRun

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.2.2.RELEASE)
~

当在这个状态下打开另一个终端并访问localhost:8080时,将会调用HelloGradleController.java中定义的方法!

$ curl http://localhost:8080
Hello Gradle!

最后

在本文中,我们尝试使用Cloud9环境下的Groovy来使Spring Boot正常运行。
尽管在写作过程中我意识到,相对于自己手动编写,使用Spring Initializr会更简单。
如果能在Cloud9中使用Spring Tool Suite会更加方便,但只能祈祷未来的发展了。

广告
将在 10 秒后关闭
bannerAds