創(chuàng)建項(xiàng)目是 CLI 的主要用法。創(chuàng)建新項(xiàng)目的主要命令是 create-app,它創(chuàng)建一個(gè)通過 HTTP 進(jìn)行通信的標(biāo)準(zhǔn)服務(wù)器應(yīng)用程序。對(duì)于其他類型的應(yīng)用程序,請(qǐng)參閱下面的文檔。
命令 | 描述 | 選項(xiàng) | 示例 |
---|---|---|---|
|
創(chuàng)建一個(gè)基本的 Micronaut 應(yīng)用程序。 |
|
|
|
創(chuàng)建命令行 Micronaut 應(yīng)用程序。 |
|
|
|
創(chuàng)建一個(gè) Micronaut 無服務(wù)器函數(shù),默認(rèn)使用 AWS。 |
|
|
|
創(chuàng)建一個(gè)僅通過消息傳遞協(xié)議進(jìn)行通信的 Micronaut 應(yīng)用程序。默認(rèn)使用 Kafka,但可以使用 --features rabbitmq 切換到 RabbitMQ。 |
|
|
|
創(chuàng)建一個(gè)使用 gRPC 的 Micronaut 應(yīng)用程序。 |
|
|
創(chuàng)建命令標(biāo)志
create-* 命令生成一個(gè)基本的 Micronaut 項(xiàng)目,帶有用于指定功能、語言、測(cè)試框架和構(gòu)建工具的可選標(biāo)志。除函數(shù)外的所有項(xiàng)目都包含一個(gè)用于啟動(dòng)應(yīng)用程序的默認(rèn)應(yīng)用程序類。
Flag | 描述 | 示例 |
---|---|---|
|
項(xiàng)目使用的語言(java、groovy、kotlin 之一——默認(rèn)為 java) |
|
|
用于項(xiàng)目的測(cè)試框架(junit、spock 之一——默認(rèn)為 junit) |
|
|
構(gòu)建工具(gradle、gradle_kotlin、maven 之一——java 和 groovy 語言默認(rèn)為 gradle;kotlin 語言默認(rèn)為 gradle_kotlin) |
|
|
用于項(xiàng)目的功能,以逗號(hào)分隔 |
或
|
|
如果存在,則在當(dāng)前目錄中生成項(xiàng)目(如果設(shè)置了此標(biāo)志,則項(xiàng)目名稱是可選的) |
|
創(chuàng)建后,可以使用 Application 類或適當(dāng)?shù)臉?gòu)建工具任務(wù)啟動(dòng)應(yīng)用程序。
啟動(dòng) Gradle 項(xiàng)目
$ ./gradlew run
啟動(dòng) Maven 項(xiàng)目
$ ./mvnw mn:run
語言/測(cè)試功能
默認(rèn)情況下,創(chuàng)建命令會(huì)生成一個(gè) Java 應(yīng)用程序,并將 JUnit 配置為測(cè)試框架。所有選擇的選項(xiàng)和應(yīng)用的功能都作為屬性存儲(chǔ)在 micronaut-cli.yml 文件中,如下所示:
micronaut-cli.yml
applicationType: default
defaultPackage: com.example
testFramework: junit
sourceLanguage: java
buildTool: gradle
features: [annotation-api, app-name, application, gradle, http-client, java, junit, logback, netty-server, shade, yaml]
某些命令依賴于此文件中的數(shù)據(jù)來確定它們是否應(yīng)該可執(zhí)行。例如,create-kafka-listener 命令要求 kafka 是列表中的功能之一。
CLI 使用 micronaut-cli.yml 中的值來生成代碼。生成項(xiàng)目后,您可以編輯這些值以更改項(xiàng)目默認(rèn)值,但是您必須提供所需的依賴項(xiàng)和/或配置才能使用您選擇的語言/框架。例如,您可以將 testFramework 屬性更改為 spock 以使 CLI 在運(yùn)行命令(例如 create-controller)時(shí)生成 Spock 測(cè)試,但您需要將 Spock 依賴項(xiàng)添加到您的構(gòu)建中。
要?jiǎng)?chuàng)建支持 Groovy 的應(yīng)用程序(默認(rèn)使用 Spock),請(qǐng)通過 lang 標(biāo)志提供適當(dāng)?shù)恼Z言:
$ mn create-app my-groovy-app --lang groovy
這包括項(xiàng)目中的 Groovy 和 Spock 依賴項(xiàng),并在 micronaut-cli.yml 中寫入適當(dāng)?shù)闹怠?/p>
要?jiǎng)?chuàng)建支持 Kotlin 的應(yīng)用程序(默認(rèn)使用 Kotest),請(qǐng)通過 lang 標(biāo)志提供適當(dāng)?shù)恼Z言:
$ mn create-app my-kotlin-app --lang kotlin
這包括項(xiàng)目中的 Kotlin 和 Kotest 依賴項(xiàng),并在 micronaut-cli.yml 中寫入適當(dāng)?shù)闹怠?/p>
默認(rèn)情況下,create-app 創(chuàng)建一個(gè) Gradle 項(xiàng)目,在項(xiàng)目根目錄中有一個(gè) build.gradle 文件。要使用 Maven 構(gòu)建工具創(chuàng)建應(yīng)用程序,請(qǐng)通過構(gòu)建標(biāo)志提供適當(dāng)?shù)倪x項(xiàng):
$ mn create-app my-maven-app --build maven
create-cli-app 命令生成一個(gè) Micronaut 命令行應(yīng)用程序項(xiàng)目,帶有指定語言、測(cè)試框架、特性、配置文件和構(gòu)建工具的可選標(biāo)志。默認(rèn)情況下,該項(xiàng)目包含 picocli 功能以支持命令行選項(xiàng)解析。該項(xiàng)目將包含一個(gè) *Command 類(基于項(xiàng)目名稱,例如 hello-world 生成 HelloWorldCommand),以及一個(gè)關(guān)聯(lián)的測(cè)試,該測(cè)試實(shí)例化命令并驗(yàn)證它是否可以解析命令行選項(xiàng)。
創(chuàng)建后,可以使用 *Command 類或適當(dāng)?shù)臉?gòu)建工具任務(wù)啟動(dòng)應(yīng)用程序。
啟動(dòng) Gradle 項(xiàng)目
$ ./gradlew run
啟動(dòng) Maven 項(xiàng)目
$ ./mvnw mn:run
創(chuàng)建函數(shù)應(yīng)用
create-function-app 命令生成一個(gè) Micronaut 函數(shù)項(xiàng)目,該項(xiàng)目針對(duì)無服務(wù)器環(huán)境進(jìn)行了優(yōu)化,帶有用于指定語言、測(cè)試框架、功能和構(gòu)建工具的可選標(biāo)志。該項(xiàng)目將包括一個(gè) *Function 類(基于項(xiàng)目名稱,例如 hello-world 生成 HelloWorldFunction),以及一個(gè)關(guān)聯(lián)的測(cè)試,該測(cè)試實(shí)例化該函數(shù)并驗(yàn)證它是否可以接收請(qǐng)求。
目前,AWS Lambda、Micronaut Azure 和 Google Cloud 是支持 Micronaut 功能的云提供商。要使用其他提供程序,請(qǐng)?jiān)诠δ苤刑砑右粋€(gè):--features azure-function 或--features google-cloud-function。
CLI 源代碼位于 https://github.com/micronaut-projects/micronaut-starter。那里有關(guān)于如何貢獻(xiàn)和其他資源的信息。
比較版本
查看新版本 Micronaut 的版本依賴更新和其他更改的最簡單方法是使用舊版本生成一個(gè)干凈的應(yīng)用程序,使用新版本的 mn CLI 生成另一個(gè)應(yīng)用程序,然后比較這些目錄。
更多建議: