会社概要
1Cではプラットフォームを開発するだけではありません
エントリー
私たちは Java アプリケーションのビルド システムとして Maven をよく使用します。この短い記事では、開発を組織する過程で直面しなければならなかった問題の XNUMX つと、この問題を克服するためのアプローチについて話したいと思います。問題。
前提条件とワークフロー
Maven プロジェクトの開発の特殊性により、非常に多くのモジュール、依存関係、子プロジェクトを使用します。 XNUMX つのツリー内の pom ファイルの数は数十、場合によっては数百にもなります。
「大したことはない、彼らは一度作成しただけで忘れてしまったのだ」と思われるでしょう。 すべてのファイルを一度に変更または追加する必要がある場合は、エディターや IDE に便利なツールがたくさんあります。 pom.xml に対する最も一般的な定期的な変更は何ですか? プロジェクトのバージョンと依存関係が変更されると考えられます。 おそらくこれに反論したい人もいるでしょうが、これがまさに私たちの状況です。 その理由は、カーネルとともに多くの独自のライブラリを同時に開発しており、ビルドとテストの結果を常に再現するためには、スナップショットの使用が便利なアプローチとは思えないという事実にあります。 このため、ビルドごとにプロジェクト内のバージョン番号を上げる必要があります。
また、開発者はライブラリの独自のブランチを構築し、その機能をすべての依存関係に対してチェックする必要がある場合があり、そのためにはすべての依存関係のバージョンを手動で変更する必要があります。
初期の解決策
このように頻繁に複数のバージョンが変更されるため、CI 内のプロセスを簡素化および自動化したいと考えています。 ここで、便利でよく知られたプラグインが役に立ちます。 バージョン-maven-プラグイン - 接続して起動します
mvn -N バージョン:set -DnewVersion=2.0.1
そして Maven はすべてを正常に実行します。階層を上から下まで実行し、すべてのバージョンを置き換えます。素晴らしいことです。 あとはプル リクエストを送信するだけです。同僚が変更をレビューし、あなたはすぐにトランクに参加できます。 素早く? たとえそれがどのようなものであっても。 数百 pom.xml レビュー用です。コードはカウントされません。 さらに、このような多数の変更されたファイルによるマージ競合から安全に過ごせる人は誰もいません。 ここで、CI プロセスでは、バージョンの変更は機能の変更とともに自動的に発生し、個別に発生するわけではないことに注意してください。
新機能
しばらくの間、私たちは落ち着いて、あきらめて、彼らが来るまでそのように暮らしました。
mvn -Drevision=2.0.0 クリーンパッケージ
システムプロパティ値は、で定義された値よりも優先されます。プロパティ>.
親
4.0.0
org.apache
アパッチ
18
org.apache.maven.ci
親の親
初めての CI フレンドリー
${改訂}${sha1}${変更リスト}
...
1.3.1
-スナップショット
子孫
4.0.0
org.apache.maven.ci
親の親
${改訂}${sha1}${変更リスト}
org.apache.maven.ci
シ子
...
バージョン 2.0.0-SNAPSHOT をビルドしたい場合は、次のようにしてください。
mvn -Drevision=2.0.0 クリーンパッケージ
リリースしたい場合は、スナップショットをリセットしてください
mvn -Dchangelist= クリーンなパッケージ
*上記の例は以下から抜粋したものです
厳しい現実
すべてが順調で健康的で、満足感を感じる時期ですが、そうではありません。 この方法は、リポジトリで公開されているアーティファクトの説明では置き換えられないため、インストールとデプロイには機能しないことが判明しました。 ${リビジョン} その意味を理解していない場合、Maven はそれが何であるかを理解できなくなります。
org.apache
アパッチ
${リビジョン}
トンネルの終わりの光
私たちは問題の解決策を探す必要があります。 状況を救えたかもしれない
プロジェクトにプラグインを追加する
org.codehaus.mojo
flatten-maven-プラグイン
1.1.0
真実
解決CiFriendliesOnly
平らにする
プロセスリソース
平らにする
平らにする.きれいにする
クリーン
クリーン
完了!
ハッピーエンド
今後、プロジェクト全体のバージョンを変更し、それをすべての依存関係に知らせるには、要素を編集するだけで済みます。リビジョン> 根元だけで pom.xml。 同じ変更が加えられたファイルが XNUMX 個や XNUMX 個ではなく、XNUMX 個だけレビューに届きます。 まあ、使う必要はないけどね バージョン-maven-プラグイン.
出所: habr.com