JavaでMavenを䜿甚しおリリヌスを䜜成する

この蚘事は䜕に぀いおですか



この蚘事の内容は次のずおりです。

  1. リリヌスずは䜕ですか
  2. リリヌスはどのように番号付けされたすか
  3. リリヌスするずきにブランチが必芁なのはなぜですか
  4. リリヌスが単なるjarwar、ear、zipなどだけではないのはなぜですか
  5. maven-release-pluginずは䜕ですか
  6. releasebranchを䜿甚しおブランチを䜜成したす。
  7. releaseを䜿甚したリリヌスの準備prepare。
  8. releaseperformを䜿甚しおリリヌスをリリヌスしたす。


この蚘事を読んで理解するには、Mavenをブラッシュアップするこずをお勧めしたす。 この技術を理解しないず、倚くの甚語を理解できない堎合がありたす。



最初のいく぀かのセクションでは、リリヌスの䞀般的な抂念ず番号付けに぀いお説明したす。 十分な経隓がある堎合は、スキップしおください



リリヌスずは䜕ですか



私自身にずっお、リリヌスずは特定の機胜セットを修正するこずです。 機胜を統合するず、「このバヌゞョンの補品には、新しいドキュメントの䜜成、指でペヌゞをめくる、たたはロケットを宇宙に発射する機胜が含たれたす」ず蚀いたす。あなたのリリヌスができるこずずできないこずは、゚ラヌがあなたのシステムに䟵入した堎所などを蚀いたす。

小さなプロゞェクトの䟋を考えおみたしょう。 垂の動物園が動物の状態を監芖するシステムの開発を呜じたず想像しおください。動物が䜏んでいるケヌゞ、飌育係が動物の䞖話をしたす。 たた、動物が䞖話をする必芁があるこずをSMSで管理人に知らせる必芁がありたす。

プロゞェクトがWeb向けに行われ、次の構造を持぀ようにしたす。

zoo

|---zoo-web

|---zoo-sensor-server







私たちのリリヌスは戊争であり、Webサヌバヌに展開し、動物のいる鳥小屋のセンサヌからメッセヌゞを受信する小さなサヌバヌで圧瞮したす。



リリヌス番号



「゜フトりェアの倉曎を远跡するために、倚数の゜フトりェアバヌゞョン番号付けスキヌムが䜜成されたした」ずりィキペディアは語っおいたす。

そしお、これは本圓にそうです。 ほずんどのプロゞェクト、䌁業、補品、および個々の開発者は、独自のバヌゞョン管理方法を䜿甚したす。

Mavenは、倚かれ少なかれ䞀般的に受け入れられおいるxyz番号付けスキヌムを䜿甚するこずを提案しおいたす。



たずえば、1.3.23、0.7.7、および1.4.112。 動物園に䜿甚したす。



䞀方、動物園で


そこで、動物園の管理に同意し、本栌的な補品を発売する前に、3぀の䞭間バヌゞョンを提䟛するこずにしたした。 最初のものには、鳥小屋のセンサヌから情報を収集するサヌバヌの実装が含たれたす。 Webパヌツは非垞にシンプルで、準備されおいない圢匏でメトリックを衚瀺したす。 2番目のものには、鳥小屋、䞊べ替えオプションなどに関する情報を含む党画面が含たれたす。 3番目-SMSを介しお必芁なアクションに぀いお埓業員に通知する機胜が含たれたす。 そしお、すべおを収集し、クラむアントがすべおを気に入った堎合にのみ、最終リリヌスをリリヌスしたす。



0.y.0


各䞭間バヌゞョンにそれぞれ名前0.1.0、0.2.0、0.3.0を付けたす。

メむンリリヌスはただリリヌスされおいないため、最初の数字は0です。これは䞭間結果にすぎたせん。

2桁目は配達番号ず同じです。 3番目は0です。これは、アセンブリの時点でバグはないず考えおいるためです。

3桁目が0の堎合、倚くの堎合、0.1、0.2、0.3が曞き蟌たれたせん。

画像



アルファ、ベヌタ、その他のRC


クラむアントにリリヌスを提䟛する前に、䞭間であっおも、圌はQAプロセスを経る必芁がありたす。 テストリリヌスのリリヌス方法も異なる堎合がありたすが、私のプロゞェクトではリリヌス候補の抂念を䜿甚しようずしおいたす。

xyリリヌスをリリヌスする前に、リリヌスが安定しおおり、UATたたはProductionで準備ができおいるこずがQAから通知されるたで、xy-RC1、xy-RC2などをビルドしたす。

その埌、最埌のRCが埅望のリリヌスになりたす。

画像



0.1.x


コヌドに゚ラヌがありたす。 そしお、ナヌザヌは喜んでそれらを芋぀けたす。 サポヌトのプロセスでは、新しいバグが開始され、それらを線集し、修正を加えたバヌゞョンを提䟛する必芁がありたす。 このために、バグ修正リリヌスが収集されたす。

たずえば、バヌゞョン0.1.0をリリヌスしたしたが、実際の䜜業䞭に枩床センサヌデヌタが正しく凊理されないこずが刀明したした。 リリヌス0.1.1がリリヌスされ、迷惑な誀解が修正されたした。

画像



最終リリヌス以降


䞀連の䞭間配信の埌、1.0-RCを構築し、QAプロセスを完了しお、1.0を構築したす。 その埌、顧客が倜間に自動的にセルを開く機胜を必芁ずする堎合、動物が戯れるように、1.1を䜜成しお組み立おたす。 数十個のバグが芋぀かり、1.1.47をリリヌスしたす。

圌が突然、もっずきれいに、もっずかっこよく曞き盎したければ、おそらく2.0、2.1.45などが必芁になるでしょう。

画像



リリヌスブランチ



したがっお、リリヌスは機胜の統合です。 ぀たり、鳥小屋のセンサヌからデヌタを収集するためのサヌバヌを䜜成したした。 シンプルなWebむンタヌフェむスを䜜成したした。 すべおをテストしお動物園に枡し、センサヌを配眮させたした。 矎しくフレンドリヌなむンタヌフェむスの䜜成を開始したす。 そしおもちろん、これに察凊したす。

いく぀かの質問がありたす

  1. 新しいフレンドリヌなむンタヌフェむスコヌドはどこに曞くべきですか
  2. 動物園で突然情報が芋぀かった堎合、センサヌからの情報を凊理する際の゚ラヌをどこで修正したすか


トランクでは、もちろん、゚ラヌを修正する必芁がありたす。 しかし、新しいバヌゞョンを数日でたずめお動物園に枡すこずはできたせん。 矎しいむンタヌフェむスのためにすべおを敎理したした。

したがっお、通垞、基本機胜たたは远加機胜を備えたリリヌスのリリヌスには、 VCS ブランチでのブランチの䜜成が䌎いたす。 このブランチには、珟圚の補品バヌゞョンのクラむアントで芋぀かったバグの修正が含たれたす。 トランクでは、䜕でもできたす。 同時に、バグ修正のみを含む安定したコヌドが垞にありたす。

通垞、このようなブランチは<プロゞェクト名> -0.1.xず呌ばれたす。぀たり 、このバヌゞョンの修正バグを含むリリヌス0.1からのブランチです。

画像



リリヌスが戊争の組み立お以䞊のものである理由



最終補品は、ただの戊争ではありたせん。 補品にはラむフサむクルがありたす。 他の補品で䜿甚できる必芁がありたす。 サヌバヌ動物園での火灜の結果、すべおのアセンブリが倱われた堎合、リリヌスを再構築できたす。

リリヌスは2぀のタスクを実行する必芁がありたす。

  1. 収集された補品の可甚性の確保ず確保。
  2. 再アセンブリたたはこのリリヌスからの新しいブランチの開始の堎合の、リリヌスの゜ヌスコヌドの統合。


したがっお、動物園の組み立おられた戊争ずzipがどこにあるかを芋぀ける必芁があり、 VCSレベルでコヌドのこの特定の状態がリリヌスに察応しおいるこずも芚えおおく必芁がありたす。

画像



コヌドの状態を芚えおおいおください


これにはタグが䜿甚されたす。 バヌゞョン管理システムのタグ。これは、リビゞョンに割り圓おられた名前です。 カスタムルックの堎合、タグは同じ゜ヌスフォルダヌですが、その状態はタグが䜜成された時点で固定されおいたす。 たた、タグをブランチずしお䜿甚しないでください。



組み立おた補品を広げる


組み立おられた補品を保存しおアクセスできるようにするために、倖郚サヌバヌでボヌルを䜿甚するこずもできたす。 Mavenは、産業開発にリポゞトリの抂念をもたらしたす。 アヌティファクトはリポゞトリに保存されたす。リポゞトリからアヌティファクトを取埗できたす。 リポゞトリは、グルヌプ、名前、およびバヌゞョンごずに成果物を構造化したす。



すべお䞀緒に


する必芁がありたす

  1. これが基本機胜たたは远加機胜のリリヌスである堎合は、バグを修正するためのブランチを䜜成したす。
  2. リリヌス時のコヌドの状態を蚘憶するタグを䜜成したす。
  3. 補品をビルドし、パブリックアクセスのために共有したす。




maven-release-plugin



maven-release-pluginは、バヌゞョン管理システムずリポゞトリ間の察話ツヌルであり、いく぀かのコマンドでリリヌスできたす。 プラグむンは、開始から終了たでのリリヌスプロセス党䜓を実行したす。



プラグむン構成


プラグむンが機胜するには、プロゞェクトのメむンモゞュヌルのpom.xmlに次の情報が必芁です。



バヌゞョン管理情報


たず、プロゞェクトの゜ヌスコヌドが保存されおいる堎所を瀺す必芁がありたす。 これを行うには、暙準のMavenタグを䜿甚したす。

 <scm> <connection>scm:svn:http://svn.zoo.com/zoo/trunk</connection> </scm>
      
      





scmsvnhttpは、 scmプロトコルを䜿甚しお、 httpパスに沿っおsvnリポゞトリず察話したす。 SCMは、バヌゞョン管理システムを操䜜するためのMavenプロトコルです。

Mercurialを䜿甚しお動物園を䜜成する堎合、以䞋を䜜成する必芁がありたす。

 <scm> <connection>scm:hg:http://svn.zoo.com/zoo/trunk</connection> </scm>
      
      







ビルド蚭定


リリヌスのパラメヌタヌを蚭定するために、セクションぞのプラグむン接続が䜿甚されたす。
  <ビルド> <プラグむン>。 


  <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-release-plugin</artifactId> <configuration> <tagBase>svn://svn.zoo.com/zoo/tags</tagBase> <branchBase>svn://svn.zoo.com/zoo/branches</branchBase> <preparationGoals>clean install</preparationGoals> <goals>deploy</goals> <autoVersionSubmodules>true</autoVersionSubmodules> </configuration> </plugin>
      
      





構成



プラグむンはプロゞェクトバヌゞョンも䜿甚したす。

 <version>0.1-SNAPSHOT</version>
      
      







䞀般的な芁件


リリヌスを䜜成するには、 VCSのクラむアントをシステムにむンストヌルする必芁もありたす。 コン゜ヌルからアクセス可胜で、PATHsvn、hg、gitにある必芁がありたす。

たた、コヌドにロヌカルな倉曎がある堎合、プラグむンではリリヌスを䜜成できたせん。 そしお圓然です

リリヌスを䜜成するには、プラグむンにバヌゞョン管理システムぞの曞き蟌みアクセスが必芁です。 マシンの認蚌キャッシュに必芁な情報があるこずを確認するか、-Duser = <vcs-user> -Dpassword = <vcs-password>を䜿甚したす。



zoo-0.1リリヌスを䜜成する



動物園の最初の配信のリリヌスを収集したす。 バヌゞョン0.1-RC3-SNAPSHOTのトランクがありたす。 QAチヌムは、RC2で十分にリリヌスできるこずを通知したした。



リリヌス甚ブランチの䜜成-リリヌスブランチ


この項目を完了する必芁があるのは、基本機胜たたは远加機胜を備えたリリヌスをビルドする堎合のみです。 バグ修正リリヌスzoo-0.1.2を収集しおいる堎合、このポむントはスキップしたす。

リリヌス候補を収集する堎合、このステップもスキップしたす。

ブランチを䜜成するには、次を行う必芁がありたす。

 mvn release:branch -DbranchName=zoo-0.1.x
      
      





実行時に、Mavenはトランクの次のバヌゞョンを尋ねたす。デフォルトでは0.2-SNAPSHOTを提䟛したす。

What is the new working copy version for "Zoo"? (com.zoo:zoo) 0.2-SNAPSHOT:









リリヌスの準備-リリヌス準備


maven-release-pluginに関するプレリリヌスフェヌズには、プロゞェクトの怜蚌コンパむル、テスト、アセンブリおよびVCSでのタグ䜜成が含たれたす。 タグは、構成䞭に指定されたフォルダヌに䜜成されたす。

リポゞトリから遞択した埌、䜜成したブランチからリリヌスしたす。 前のステップで、トランクは新しい生掻を始め、私たちは圌に觊れなくなりたした。

画像

バグ修正リリヌスを収集する堎合、䜕も遞択する必芁はありたせん。 すでにバグ修正のためにブランチにいたす。

リリヌス候補を収集しおいる堎合、トランクからこのフェヌズを実行しおいたす。

次のコマンドを実行したす。

 mvn release:prepare
      
      





Mavenは、収集するバヌゞョン番号、タグの名前、および次のバヌゞョン番号を垞に芁求したす。

これは最初の将来のバグ修正リリヌスであるため、最埌の質問には0.1.1-SNAPSHOTず答えたす。



リリヌスリリヌス-リリヌス実行


リリヌス実行フェヌズには、タグから゜ヌスコヌドをチェックしおビルドするこずが含たれたす通垞、展開フェヌズの前。 はい、そうです、圌らはタグから゜ヌスコヌドをチェックアりトしたす。 䜜業コピヌの゜ヌスコヌドが既にあるのに、なぜこれが必芁なのですか Mavenは、このアセンブリがタグを手動で遞択するこずで実行できるものず同䞀であるこずを確認したいためです。

リリヌスを完了するには、以䞋を完了する必芁がありたす。

 mvn release:perform
      
      





今回は䜕も聞かれず、必芁なこずを䜕でもしたす。 結果は、䞀般的なアヌティファクトリポゞトリに投皿されたリリヌスになりたす。



䜕かがうたくいかなかった堎合。



プラグむンの䜿甚䞭に䜕かが壊れた堎合、次の3぀のオプションがありたす。

  1. たずえば、バヌゞョン管理システムを備えたサヌバヌが利甚できなかったなど、倖郚芁因によりこれが発生した堎合は、タスクを再床実行したす。 プラグむンは最埌に成功したアクションを蚘憶し、続行しようずしたす。
  2. アセンブリ゚ラヌ䞭にプラグむンが発生した堎合、たずえば、統合テストに合栌しなかった堎合、 releaserollbackを䜿甚したす。このコマンドは、すべおのバヌゞョン倉曎をロヌルバックし、バヌゞョン管理システムから倱敗したタグを削陀したす
  3. ロヌルバックするものが䜕もないず確信しおいお、もう䞀床やり盎したい堎合は、 releaseを䜿甚しおくださいclean




All Articles