6

複数のターゲット プラットフォーム用にビルドする必要があるアーティファクトがあります。

  • Linux x86
  • ウィンドウズ x86
  • アーム11

残念ながら、クロスコンパイラがないため、アーティファクトのすべてのバージョンを一度に作成することはできません。

言い換えれば、目標は、リポジトリにこのようなものを持つことです

  • アーティファクト-1.0.0-linux.zip
  • アーティファクト-1.0.0-windows.zip
  • アーティファクト-1.0.0-arm11.zip
  • アーティファクト-1.0.1-linux.zip
  • アーティファクト-1.0.1-windows.zip
  • アーティファクト-1.0.1-arm11.zip
  • ...

バージョンが同期されていることに注意してください。これを達成する方法は?

問題は、ビルドのたびにリリース プロセスによって pom.xml のバージョンがアップグレードされることです。したがって、さまざまなプラットフォームで連続して構築することで、

  • アーティファクト-1.0.0-linux.zip
  • アーティファクト-1.0.1-windows.zip
  • アーティファクト-1.0.2-arm11.zip
  • アーティファクト-1.0.3-linux.zip
  • アーティファクト-1.0.4-windows.zip
  • アーティファクト-1.0.5-arm11.zip
  • ...

しかし、これは私が探しているものではありません。

私はできた

  1. Linuxで実行

    mvn release:prepare release:perform -DpushChanges=false

    (pushChanges を false release に設定すると、SCM でバージョン番号が増加しません)

  2. そして、Windowsで実行します

    mvn リリース:リリースの準備:実行

    (これにより、バージョン番号が増加します)

しかし、さまざまなプラットフォームで適切な順序でリリース プロセスを開始する責任は私にあります。これを手伝ってくれる方法はありますか?

何か提案はありますか?

ありがとう


PS。これは、モジュールに編成する方法に関する質問ではないことに注意してください。複数のプラットフォームで単一のアーティファクトのリリース プロセスを同期する方法についてです。

4

3 に答える 3

2

これに対する解決策はまだ見つかりましたか?Maven と戦っているのは私だけではないことを知ってよかったです :-)

ともかく、

リリースされたバージョンを nexus にデプロイできますか? 私は考えています、あなたはこれを行うことができます:

1 - Windows マシンから「mvn release:prepare release:perform」を実行します。これにより、artifact-1.0.1-windows.zip が nexus に取り込まれます。

2 - ソース管理から artifact-1.0.1 タグをチェックアウトします

3 - Linux と arm11 から "mvn deploy" を実行します (それが何であれ :P) - -linux.zip と -arm11.zip も nexus に取り込まれます。

ただし、nexus の構成方法によっては、同じ GAV で何かを再デプロイできないと思います (たとえ分類子が異なっていても)。

于 2012-08-01T05:10:55.063 に答える
0

あなたはあなたの質問を手伝ってくれました... pushChanges=false オプションについて知りませんでした。

Jenkinsを使用すると、"Trigger builds remote (eg, from scripts)" 機能を使用して一連の maven リリースを実行するジョブを各プラットフォームでセットアップできます。必要に応じて、パラメーター化されたビルドを使用してビルドするバージョンを選択できます (それを使用する場合は、他のプラットフォームでビルドをトリガーするためにパラメーター化されたトリガー プラグインが必要です)。

于 2013-04-23T22:07:10.733 に答える
0

ご覧のとおり、特定のプラットフォームを対象としたさまざまなアーティファクトのリリースを区別するためlinuxに、のようwindowsな分類子 (アーティファクトのファイル名サフィックス) を使用します。arm11したがって、Maven によって管理されるマルチモジュール プロジェクトを作成すると、モジュールは同じgroupId、同じartifactId、同じversion(おそらく共通の親から継承されたもの) のアーティファクトになりますが、異なるclassifierが必要な場合は、正確に必要なものが得られます。そのような場合、すべてのモジュールを一度にリリースするために、常にマルチモジュール POM (通常はそのモジュールの共通の親でもあります) をリリースします。すべてのモジュールに対して同じバージョンのポリシー (ここではかなりうまく適合しているようです) を想定すると、基本的に次のように実行できます。

mvn release:prepare release:perform -DautoVersionSubmodules

以上です。artifact-1.0.0-linux.zipartifact-1.0.0-windows.zipartifact-1.0.0-arm11.zipアーティファクトがリリースされます。次の開発バージョンは1.0.1-SNAPSHOT、すべてのモジュールに対して (親からの継承を介して) に設定されます。

于 2012-04-05T12:45:28.483 に答える