2

Maven 2.2.1 と Jenkins を使用しています。300 ~ 400 のモジュールがあります。数か月前、Ant から Maven への移行を最終決定しました。その時点での目標は、Maven 2.2.1 で適切にビルドされることを確認することでした。Maven 3.0.x に直接移行するつもりはまだなかったからです。ええ、Maven が比較的安定していることはわかっていましたが、すべてのモジュールとアセンブリを (Ant から) 移行するのに労力が必要だったため、2.2.1 などのよく知られている安定したバージョンを使用することにしました。

Maven 3.x に完全に準拠していないモジュールのリストを作成するために、Jenkins ジョブ (現在 Maven 2.2.1 を使用して実行されている) をスケジュールして、スケジュールされた時間に 3.0.4 を使用してそれらをビルドしたいと考えています。夜間に。これどうやってするの?

前もって感謝します!

マーティン

4

1 に答える 1

2

これは絶叫ハックですが、うまくいくはずです。これはハックなので、正確な詳細はあなたに任せます ;-)

Maven 3 ジョブをフェンシングするには、2 つのジョブを設定する必要があります。

ビルドステップを追加するには、両方のジョブにGroovy プラグインが必要です。

システム構成で 3 つのバージョンの Maven をセットアップします。

  • Maven 2.2.1
  • Maven 3.0.4
  • 昼は Maven 2.2.1、夜は 3.0.4

最初のジョブはグローバル構成にアクセスMaven 2.2.1 by day 3.0.4 by nightし、 と同じパスを指すように変更しますMaven 3.0.4。2 番目のジョブはそれを元に戻します。

コードは次のようにする必要があります

import hudson.tasks.*;
Maven.DescriptorImpl descriptor = jenkins.model.Jenkins.instance.getDescriptor(Maven.class);
Maven.MavenInstallation[] installs = descriptor.installations.clone; 
// clone the array because we will be modifying it
Maven.MavenInstallation v3 = null;
for (Maven.MavenInstallation i: installs) {
  if (i.name.equals("Maven 3.0.4")) { v3=i; break;}
}
v3.class; // throw NPE if null (should be non-null)
for (int i = 0; i < installs.length; i++) {
  if (installs[i].name.contains("by night")) { installs[i] = new Maven.MavenInstallation(installs[i].name,v3.home); break;}
}
descriptor.setInstallations(installs);

上記の構文をチェックしていないことに注意してください。ただし、並べ替えるには十分に近いはずです。

リバースジョブは自明に簡単なはずです

于 2012-08-13T08:25:30.863 に答える