以前、「 start.spring.io をベースに Java スキャフォールディングのカスタマイズを実現した」という記事で、当社のマイクロサービス スキャフォールディング プロセスの過去と現在を説明し、 springInitializr をベースとしたスキャフォールディング 2.0 バージョンについて言及しました。今日は、その実装プロセスと詳細について共有する予定であり、このプロジェクトは Github でオープンソース化されています。
start-parent:https://github.com/studeyang/start-parent
ウェルカムスター
1. プロジェクト構造の紹介
プロジェクトはinitializr、start-client、start-siteの3つの部分に分かれており、重要な部分を以下に説明します。
start-parent
|- initializr 代码生成
|- initializr-actuator
|- initializr-bom
|- initializr-docs
|- initializr-generator 生成基础工程代码
|- initializr-generator-spring 生成 spring 工程代码
|- initializr-generator-test 单元测试的封装
|- initializr-generator-zebra 生成 zebra 分层架构
|- initializr-metadata 工程元数据(pom 相关定义)
|- initializr-parent
|- initializr-service-sample
|- initializr-version-resolver 版本解析
|- initializr-web
|- start-client 脚手架前端
|- start-site 脚手架后端
以下に示すように、プロジェクト間の依存関係図を簡略化しました。
プロジェクトの全体状況を理解した上で、私の思考回路に従って一緒にプロジェクトを作り上げてください。
2. Gitlab の統合
プロジェクトで「プロジェクトの作成」機能を使用する場合は、このステップを設定する必要があります。ここではgitlab.com
例として、Gitlab との統合を完了する方法を紹介します。
まず、後続のログイン認証ジャンプを完了するために、Gitlab にアプリケーションを信頼させる必要があります。Gitlab プラットフォームでスキャフォールディング アプリケーションを構成します。
ここではローカル開発環境のリダイレクト URI を設定しましたが、後でサーバーにデプロイする必要がある場合は、スキャフォールディング サーバーのバックエンド アドレスを設定する必要があります。
構成が完了すると、Gitlab はアプリケーションを記録し、アプリケーション ID とシークレットを割り当てます。これら 2 つのフィールドの値を開始サイトの application.yml ファイルに構成する必要があります。
security:
base-url: https://gitlab.com
authorization-uri: ${
security.base-url}/oauth/authorize
token-uri: ${
security.base-url}/oauth/token
user-info-uri: ${
security.base-url}/api/v4/user
redirect-uri: http://127.0.0.1:8081/oauth/redirect
client-id: gitlab client id
client-secret: gitlab client secret
admin:
name: your gitlab admin username
password: your gitlab admin password
ここでは、関連フィールドである authorization-uri、token-uri、user-info-uri について簡単に紹介します。これら 3 つのフィールドは固定されており、設定する必要はありません。
- Base-url:
gitlab
管理プロジェクトを使用する場合は、base-url
構築したアドレスに設定できますgitlab
。 - redirect-uri: gitlab 認証後のリダイレクト アドレス。リダイレクトはコード パラメーターを運ぶため、ここではバックエンドがリダイレクトを受信するために使用され、ブラウザーへの公開が回避され、セキュリティが向上します。
- client-id: gitlab によって割り当てられたアプリケーション ID。
- client-secret: gitlab によって割り当てられたシークレット。
- admin.name: gitlab アカウント。プロジェクトの作成と最初のプロジェクト コードの送信に使用されます。管理者アカウントを構成することをお勧めします。
- admin.password: gitlab アカウントのパスワード;
3. コンポーネントの追加
次にコンポーネントの依存関係を追加します。casslog-spring-boot-starter
ここでは Jar パッケージを例に挙げます。コンポーネントが SpringBoot の一部のバージョンのみをサポートしている場合は、次のように互換性範囲を設定できます。
compatibility-range: "[1.4.2.RELEASE,1.5.7.RELEASE]"
完全な構成は次のとおりです。
initializr:
dependencies:
- name: 开源基础设施
bom: kmw
repository: my-rep
content:
- name: Casslog
id: casslog
groupId: io.github.studeyang
artifactId: casslog-spring-boot-starter
description: 日志工具类
starter: true
compatibility-range: "[1.4.2.RELEASE,1.5.7.RELEASE]"
links:
- rel: guide
href: {
用户手册}
description: Example 快速开始
- rel: reference
href: {
参考文档}
依存関係を構成します。
- "name" コンポーネントの依存関係カテゴリの名前。例: オープン ソース インフラストラクチャ
- このカテゴリの「bom」依存関係パッケージ管理ライブラリ
- "repository" このカテゴリの依存パッケージのリポジトリ
- 「コンテンツ」固有の依存関係パッケージ
コンテンツを設定します。
- 「name」はパッケージ名に依存します
- 「id」はパッケージの一意の識別子(コード内で使用される)によって異なります。
- 「groupId」はパッケージのgroupIdに依存します
- 「artifactId」はパッケージ artifactId に依存します
- 「説明」はパッケージの説明に依存します
- 「スターター」が spring-boot-starter かどうか
- 「compatibility-range」が依存する springboot のバージョン
- 「リンク」コンポーネントのドキュメント
設定したエフェクト図は以下の通りです。
4. アプリケーションをデプロイする
次に、スキャフォールディングをサーバーにデプロイできます。
ここで注意してください。Gitlab のリダイレクト URI をスキャフォールディング サーバーのアドレスに変更することを忘れないでください。
4.1 ステップ 1: プロジェクトのパッケージ化
# 打包前端工程
cd {
projectRoot}/start-client
sh ../mvnw install
# 打包 initializr 项目
cd {
projectRoot}/initializr
sh ../mvnw clean install -Dmaven.test.skip=true
# 打包 start-site
cd {
projectRoot}/start-site
sh ../mvnw clean install -Dmaven.test.skip=true
4.2 ステップ 2: Docker イメージを作成する
cd {
projectRoot}/start-site
docker build -t start-site:0.0.1 .
ミラーを実行するだけです。効果図は以下の通りです。
5. 足場を使用する正しい姿勢
5.1 HELP.md によるドキュメントの管理と使用
「3. コンポーネントの追加」の手順で設定したドキュメントリンクは、以下のように HELP.md ファイルに表示されます。
5.2 プロジェクトの保存/共有
設定したプロジェクトは「共有...」機能で保存できます。
5.3 IDEA でのスキャフォールディングの使用
プロジェクトはIDEAで素早く作成でき、スキャフォールディングサーバーのアドレスを設定するだけで済みます。IDEA のコミュニティ版にはこの機能がないことに注意してください。
まとめ
この記事では Spring Initializr スキャフォールディングの構築プロセスを紹介します。このプロセス中に問題が発生した場合は、ISSUE を送信するか、公式アカウント「Student Yang technotes」のバックグラウンドで私にメッセージを残してください。