JenkinsでMavenジョブを作成する場合(New Item=>Mavenプロジェクト、mavenプラグインを使用して)すべてのデフォルトで実行すると、次のエラーが発生します。
Started by user anonymous
Building on master in workspace /var/lib/jenkins/jobs/job_name/workspace
ERROR: A Maven installation needs to be available for this project to be built.Either your server has no Maven installations defined, or the requested Maven version does not exist.
Finished: FAILURE
Mavenはmvn
だけでコマンドラインから完全に実行されます。
Mavenインストール用のシステム全体のJenkins設定があります:Manage Jenkins=>Configure System=>Maven/Maven installations。そして、このWeb UIを使用してMavenインストールを追加すると(MAVEN_HOME
に/usr/share/maven
としてプリインストールパスを提供することにより)、ジョブは正常に実行されます。
グローバルJenkins設定は意味がありません。MavenはJenkinsごとではなく、スレーブごとに実行されます。
Jenkinsがジョブを実行するスレーブ動物園には、さまざまなバージョンのMavenがさまざまな場所にインストールされているさまざまなプラットフォーム、OS、環境を備えたスレーブが含まれる場合があります。
MAVEN_HOME
やM2_HOME
のような環境変数をスレーブノード上のシステム全体の同じパスに設定すると、機能しませんでした。
JenkinsマスターとスレーブはどちらもLinuxホストです。 Jenkinsバージョン:1.598
JavaおよびスレーブにMavenがインストールされていると仮定します。
これで動作するはずです(マスターにMavenインストールを構成した場合でも)。
私にとっての解決策は、Jenkinsの管理->グローバルツール構成に移動し、そこにmavenをセットアップすることでした。/configureToolsを介してこれにアクセスできます(例: http:// your-ip:8080/jenkins/configureTools )
例:Mavenインストール
/ configureToolsにある他の一般的なツールの追加構成:
Gitのインストール
JDKのインストール
Mavenをマスター構成に追加せず、独自のおそらく異なる環境変数(バージョン3.2.5の例)を使用してすべてのスレーブにインストールする場合
M2_HOME=C:\Apache-maven-3.2.5
M2=C:\Apache-maven-3.2.5\bin
Path+=;C:\Apache-maven-3.2.5\bin
その後、すべてのJenkinsスレーブがローカル設定でMavenを使用します。