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会更加方便,但只能祈祷未来的发展了。