Spring Cloud Sleuthの最後のマイナーバージョンは3.1です。最新のコミットについては、3.1.xブランチを確認できます。
警告 | Spring Cloud Sleuthは、Spring Boot 3.x以降に動作しません。 SLEUTHがサポートするSpring Bootの最後のメジャーバージョンは2.xです。 |
このプロジェクトのコアはマイクロメータートレースプロジェクトに移動し、計装はマイクロメーターとそれぞれのプロジェクトに移動されます(すべての機器が単一のリポジトリで行われなくなります。
マイクロメートルトレースの移行ガイドを確認して、スプリングクラウドスルースからマイクロメートルトレースに移行する方法を学ぶことができます。
Spring Cloud Sleuthは、分散トレース用のSpring Boot Auto-configurationを提供します。
Sleuthは、開始するために必要なすべてを構成します。これには、トレースデータ(スパン)が報告される場所、保持する痕跡(サンプリング)の数、リモートフィールド(手荷物)が送信された場合、どのライブラリがトレースされるかが含まれます。
スプリングブートアプリケーションのクラスパスにスプリングクラウドスルーを追加すると(トレーサーの実装とともに)、ログにトレースIDが表示されます。勇敢なトレーサーを備えた探偵の例:
<! - スプリングクラウドスルーには、スプリングクラウドが必要です。
<依存関係>
<依存関係>
<groupid> org.springframework.cloud </groupId>
<artifactid> spring-cloud-dependencies </artifactid> <! - 最新の安定したスプリングクラウドリリーストレインバージョン(例えば2020.0.0)を提供 - > <バージョン> $ {release.train.version} </version>
<タイプ> pom </type>
<scope>インポート</scope>
</依存関係>
</依存関係>
</DependencyManagement>
<Dependencies> <! - Boot's Web Support-> <Dependency>
<GroupId> org.springframework.boot </groupId>
<artifactid> spring-boot-starter-web </artifactid>
</dependency> <! - 勇敢なトレーサーの実装を備えた探偵 - > <依存関係>
<groupid> org.springframework.cloud </groupId>
<artifactid> spring-cloud-starter-sleuth </artifactid>
</依存関係>
</依存関係>次のHTTPハンドラーを検討してください。
@RestControllerPublic Class Democontroller {private static logger log = loggerfactory.getLogger(democontroller.class);@requestmapping( "/")public string home(){log.info( "handling home"); return "hello world";
}
}そのハンドラーをコントローラーに追加すると、ログでトレースされているhome()への呼び出しが表示されます( 0b6aaf642574edd3 idsに注意してください)。
2020-10-21 12:01:16.285情報[、0B6AAF642574EDDD3,0B6AAF642574EDD3、TRUE] 289589 --- [NIO-9000-EXEC-1]デモコントローラー:ホームの取り扱い!
注記 | ハンドラーにリクエストを明示的に記録する代わりに、 logging.level.org.springframework.web.servlet.DispatcherServlet=DEBUGを設定できます。 |
注記 | spring.application.name=myService (たとえば)を設定して、サービス名とトレースとスパンIDを表示します。 |
プロジェクトの詳細については、ドキュメントページをご覧ください。
ソースを構築するには、JDK 1.8をインストールする必要があります。
Spring Cloudは、ほとんどのビルド関連のアクティビティにMavenを使用します。また、興味のあるプロジェクトをクローン化して入力することで、すぐに地面から降りることができるはずです
$ ./MVNWインストール
注記 | Maven(> = 3.3.3)を自分でインストールして、以下の例で./mvnwの代わりにmvnコマンドを実行することもできます。それを行う場合は、地元のMaven設定にSpring Pre -Releaseアーティファクトのリポジトリ宣言が含まれていない場合は、 -P springを追加する必要があります。 |
注記 | -Xmx512m -XX:MaxPermSize=128mのような値でMAVEN_OPTS環境変数を設定することにより、Mavenが利用できるメモリの量を増やす必要があるかもしれないことに注意してください。 .mvn構成でこれをカバーしようとするので、ビルドを成功させるためにそれを行う必要があることがわかった場合は、ソースコントロールに追加される設定を取得するためにチケットを上げてください。 |
テストにミドルウェア(すなわちredis)を必要とするプロジェクトでは、一般に、[docker](https://www.docker.com/get-started)のローカルインスタンスがインストールされて実行されることが必要です。
Spring-Cloud-Buildモジュールには「Docs」プロファイルがあり、それをオンにすると、 src/main/asciidocからAsciidocソースを構築しようとします。そのプロセスの一部として、 README.adocを探して、すべての含まれるものをロードすることで処理しますが、それを解析またはレンダリングするのではなく、 ${main.basedir}にコピーするだけです(デフォルトは${basedir}に、つまりルートはルートです。プロジェクトの)。 ReadMeに変更がある場合、Mavenビルドの後に正しい場所に変更されたファイルとして表示されます。それをコミットして変更を押してください。
IDEの好みがない場合は、コードを使用するときにSpring ToolsスイートまたはEclipseを使用することをお勧めします。 Mavenサポートには、M2Eclipse Eclipseプラグインを使用します。他のIDやツールは、Maven 3.3.3以上を使用している限り、問題なく動作する必要があります。
スプリングクラウドプロジェクトでは、「スプリング」マベンプロファイルをアクティブにして、スプリングマイルストーンとスナップショットリポジトリを解決する必要があります。お好みのIDEを使用して、このプロファイルをアクティブに設定するか、ビルドエラーが発生する可能性があります。
Eclipseを使用するときは、M2Eclipse Eclipseプラグインをお勧めします。まだM2Eclipseをインストールしていない場合は、「Eclipse Marketplace」から入手できます。
注記 | M2Eの古いバージョンはMaven 3.3をサポートしていないため、プロジェクトがEclipseにインポートされると、M2eclipseにプロジェクトに適切なプロファイルを使用するように指示する必要があります。 プロジェクトのPOMに関連する多くの異なるエラーが表示されている場合は、最新のインストールがあることを確認してください。 M2Eをアップグレードできない場合は、 settings.xmlに「スプリング」プロファイルを追加します。または、親POMの「スプリング」プロファイルからsettings.xmlにリポジトリ設定をコピーできます。 |
M2Eclipseを使用したくない場合は、次のコマンドを使用してEclipse Projectメタデータを生成できます。
$ ./mvnw Eclipse:Eclipse
生成されたEclipseプロジェクトは、 fileメニューからimport existing projectsを選択することでインポートできます。
Spring Cloudは、非制限的なApache 2.0ライセンスの下でリリースされ、GitHubトラッカーを使用してPull Requestsをマスターに統合する非常に標準的なGitHub開発プロセスに従います。些細なことでさえも貢献したい場合は、躊躇しないでください。ただし、以下のガイドラインに従ってください。
自明でないパッチまたはプルリクエストを受け入れる前に、貢献者ライセンス契約に署名する必要があります。貢献者の契約に署名しても、誰もがメインリポジトリに権利をコミットすることは認められませんが、貢献を受け入れることができることを意味します。 アクティブな貢献者は、コアチームに参加するように求められ、プルリクエストをマージする機能を考慮してください。
このプロジェクトは、貢献者の契約行動規範を順守しています。参加することで、このコードを維持することが期待されます。 [email protected]に容認できない動作を報告してください。
これらのどれもプルリクエストに不可欠ではありませんが、それらはすべて助けます。 元のプルリクエストの後、マージの前に追加することもできます。
Spring Frameworkコード形式のコンベンションを使用します。 Eclipseを使用する場合は、Spring Cloud Buildプロジェクトからeclipse-code-formatter.xmlファイルを使用してフォーマッタ設定をインポートできます。 Intellijを使用する場合、Eclipse Code Formatterプラグインを使用して同じファイルをインポートできます。
すべての新しい.javaファイルが、少なくとも@authorタグを識別する簡単なJavadocクラスのコメントを持っていることを確認してください。
すべての新しい.javaファイルにASFライセンスヘッダーのコメントを追加します(プロジェクトの既存のファイルからコピー)
大幅に変更する.javaファイルに@authorとして自分自身を追加します(美容の変更以上)。
いくつかのJavadocsを追加し、名前空間を変更すると、XSDドキュメント要素を変更します。
いくつかのユニットテストも大いに役立つでしょう - 誰かがそれをしなければなりません。
他の誰もあなたのブランチを使用していない場合は、現在のマスター(またはメインプロジェクトの他のターゲットブランチ)に対してそれを再確認してください。
コミットメッセージを書くときは、これらの規則に従ってください。既存の問題を修正する場合は、コミットメッセージの最後にFixes gh-XXXXしてください(xxxxが問題番号)。
Spring Cloud Buildには、Checkstyleルールのセットが付属しています。 spring-cloud-build-toolsモジュールで見つけることができます。モジュールの下で最も注目すべきファイルは次のとおりです。
Spring-Cloud-Build-Tools/
└└)rc
├├)。チェックスタイル
│││泣きsuppressions.xml(3)
main
└)。リソース
hewemestyle-header.txt(2)
hewemestyle.xml(1)デフォルトのチェックスタイルルール
ファイルヘッダーのセットアップ
デフォルトの抑制ルール
CheckStyleルールはデフォルトで無効になっています。プロジェクトにチェックスタイルを追加するには、次のプロパティとプラグインを定義するだけです。
pom.xml
<プロパティ>
<Maven-Checkstyle-plugin.failsonerror> true </maven-checkstyle-plugin.failsonerror>(1)<maven-checkstyle-plugin.failsonviolation> true
</maven-checkstyle-plugin.failsonviolation>(2)<maven-checkstyle-plugin.includetestsourcedirectory> true
</maven-checkstyle-plugin.includetestsourcedirectory>(3)</properties>
<build>
<プラグイン>
<Plugin>(4)<GroupId> io.spring.javaformat </groupId>
<artifactid> spring-javaformat-maven-plugin </artifactid>
</プラグイン>
<Plugin>(5)<GroupId> org.apache.maven.plugins </groupId>
<artifactid> maven-checkstyle-plugin </artifactid>
</プラグイン>
</プラグイン>
<報告>
<プラグイン>
<Plugin>(5)<GroupId> org.apache.maven.plugins </groupId>
<artifactid> maven-checkstyle-plugin </artifactid>
</プラグイン>
</プラグイン>
</レポート>
</build>チェックスタイルエラー上のビルドに失敗します
チェックスタイルの違反でビルドに失敗します
CheckStyleは、テストソースも分析します
コードを再フォーマットしてほとんどのチェックスタイルのフォーマットルールを渡すスプリングJavaフォーマットプラグインを追加する
CheckStyleプラグインをビルドおよびレポートフェーズに追加します
いくつかのルールを抑制する必要がある場合(例:行の長さを長くする必要があります)、 ${project.root}/src/checkstyle/checkstyle-suppressions.xmlの下で$ {project.root} /src/checkstyle/suppressionsを定義するだけで十分です。例:
ProjectRoot/SRC/CHECKSTYLE/CHECKSTYLE-SUPPRESIONS.XML
<?xmlバージョン= "1.0"?> <!doctype抑制パブリック " - //子犬クロール// DTD抑制1.1 // en" "https://www.puppycrawl.com/dtds/suppressions_1_1.dtd"> <抑制> <suppless files = "。*configserverapplication.java" checks = "hideutilityclassconstructor"/> <suppless files = "。*configClientWatch.java" checks = "linelengthcheck"/> </抑制>
${spring-cloud-build.rootFolder}/.editorconfigおよび${spring-cloud-build.rootFolder}/.springformatプロジェクトにコピーすることをお勧めします。そうすれば、一部のデフォルトのフォーマットルールが適用されます。このスクリプトを実行することで、これを行うことができます。
$ curl https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/3.1.x/.editorconfig -o .editorconfig $ touch .springformat
Intellijをセットアップするには、コーディングコンベンション、検査プロファイルをインポートし、CheckStyleプラグインをセットアップする必要があります。次のファイルは、Spring Cloud Build Projectにあります。
Spring-Cloud-Build-Tools/
└└)rc
├├)。チェックスタイル
│││泣きsuppressions.xml(3)
main
└)。リソース
hewemestyle-header.txt(2)
hewemestyle.xml(1)
└└リン
heartherij_project_defaults.xml(4)
hewerij_spring_boot_java_conventions.xml(5)デフォルトのチェックスタイルルール
ファイルヘッダーのセットアップ
デフォルトの抑制ルール
チェックスタイルのルールのほとんどを適用するIntellijのプロジェクトのデフォルト
チェックスタイルのルールのほとんどを適用するIntellijのプロジェクトスタイルの慣習
図1。コードスタイル
File → Settings → Editor → Code styleに移動します。 Schemeセクションの横にあるアイコンをクリックします。そこで、 Import Scheme値をクリックして、 Intellij IDEA code style XMLオプションを選択します。 spring-cloud-build-tools/src/main/resources/intellij/Intellij_Spring_Boot_Java_Conventions.xmlファイルをインポートします。
図2。検査プロファイル
File → Settings → Editor → Inspectionsに移動します。 Profileセクションの横にあるアイコンをクリックします。そこで、 Import Profileをクリックして、 spring-cloud-build-tools/src/main/resources/intellij/Intellij_Project_Defaults.xmlファイルをインポートします。
チェックスタイル
IntellijをCheckStyleで動作させるには、 Checkstyleプラグインをインストールする必要があります。 Assertions2Assertjもインストールして、Junitアサーションを自動的に変換することをお勧めします
File → Settings → Other settings → Checkstyleに移動します。 Configuration fileセクションの+アイコンをクリックします。そこで、チェックスタイルのルールを選択する場所を定義する必要があります。上の画像では、クローン化されたスプリングクラウドビルドリポジトリからルールを選択しました。ただし、Spring Cloud BuildのGitHubリポジトリ( checkstyle.xml :https: https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/3.1.x/spring-cloud-build-tools/src/main/resources/checkstyle.xml )。次の変数を提供する必要があります。
checkstyle.header.fileスプリングクラウドビルド、 spring-cloud-build-tools/src/main/resources/checkstyle-header.txtファイルをクローン型リポジトリのいずれかに向けてください。 https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/3.1.x/spring-cloud-build-tools/src/main/resources/checkstyle-header.txt url。
checkstyle.suppressions.fileデフォルトの抑制。 Spring Cloud Buildのspring-cloud-build-tools/src/checkstyle/checkstyle-suppressions.xmlファイルをクローン付きリポジトリのいずれかに向けてください。 https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/3.1.x/spring-cloud-build-tools/src/checkstyle/checkstyle-suppressions.xml url。
checkstyle.additional.suppressions.fileこの変数は、ローカルプロジェクトの抑制に対応しています。たとえば、 spring-cloud-contractに取り組んでいます。次に、 project-root/src/checkstyle/checkstyle-suppressions.xmlフォルダーを指します。 spring-cloud-contractの例は、 /home/username/spring-cloud-contract/src/checkstyle/checkstyle-suppressions.xml spring-cloudcontract/src/checkstyle/checkstyle-suppressions.xmlです。
重要 | 生産ソースとテストソースにチェックスタイルルールを適用するため、 Scan Scope All sourcesに設定することを忘れないでください。 |
Spring Cloud Buildは、Java ClassPathの複製および競合するクラスとリソースにフラグを立てることを可能にするbasepom:duplicate-finder-maven-pluginに沿ってもたらされます。
デフォルトでは複製ファインダーが有効になり、Mavenビルドのverifyフェーズで実行されますが、Projecstのpom.xmlのbuildセクションにduplicate-finder-maven-plugin追加すると、プロジェクトでのみ有効になります。
pom.xml
<build>
<プラグイン>
<プラグイン>
<groupid> org.basepom.maven </groupId>
<artifactid> duplicate-finder-maven-plugin </artifactid>
</プラグイン>
</プラグイン>
</build>他のプロパティの場合、プラグインドキュメントにリストされているデフォルトを設定しました。
それらを簡単にオーバーライドできますが、 duplicate-finder-maven-pluginが付いた選択したプロパティの値を設定します。たとえば、 duplicate-finder-maven-plugin.skip trueに設定して、ビルドで複製チェックをスキップします。
ignoredClassPatternsを追加する必要がある場合、またはセットアップにignoredResourcePatterns追加する必要がある場合は、プロジェクトのプラグイン構成セクションに追加してください。
<build>
<プラグイン>
<プラグイン>
<groupid> org.basepom.maven </groupId>
<artifactid> duplicate-finder-maven-plugin </artifactid>
<configuration>
<無視されたclasspatterns>
<iandoredclasspattern> org.joda.time.base.basedatime </nagoredclasspattern>
<adoredclasspattern>
</nagoredclasspatterns>
<iandoredresourcepatterns>
<iandoredresourcepattern> changelog.txt </nagoredresourcepattern>
</IngoredResourcePatterns>
</configuration>
</プラグイン>
</プラグイン>
</build>