web-dev-qa-db-ja.com

JenkinsとMavenの違い

MavenとJenkinsの違いは何ですか?

どちらもJUnitの自動ビルドと自動実行をサポートしています。

その場合、それらは無料ですか、それとも相互に排他的ですか?いつ他を使用する必要がありますか?

59
abson

Mavenはツール/環境を構築しています。 JenkinsはCI(継続的統合)ツールです。

Mavenは、Antに代わるものです。

  1. plugins により、プロジェクトのビルドを支援します。例:ビルドとバージョン管理、JUnitテストなど。
  2. プロジェクトの 依存関係 を管理します。プロジェクトのビルド方法(プラグイン)、および必要なライブラリ(依存関係)をpom.xmlファイルで定義します。

スマートジョブスケジューラとしてのJenkinsは、バージョン管理やJUnitテストなどのタスクを支援することはできませんが、プロジェクトでpom.xmlファイルを呼び出すことで、これらすべてを間接的に支援することができます。また、Jenkinsを使用すると、どの条件を呼び出すか、結果をどのように処理するかに基づいて、pom.xmlファイルをいつ呼び出すかを決定できます。Jenkinsは、svn commitなどのさまざまなイベントをリッスンできます。現在の時刻は真夜中などです。

これは強力なアイデアです。たとえば、新しいコードがコミットされるたびにJenkinsにビルドをトリガーするか、すべてのJUnitテストを実行するように依頼し、ユニットテストに合格したら、ターゲットマシンにデプロイできます。または、深夜に重いタスクをスケジュールします(例:単体テスト)。これは、自動展開または継続的インテグレーションの基本的な考え方です。必要に応じてCIを略します。

85
Junchen Liu

Mavenは、依存関係とアプリケーションのライフサイクルを管理するビルドツールです。また、標準のコンパイル/テスト/パッケージ/インストール/展開タスクに他のタスクを追加できるプラグイン設計がありました。

Jenkinsは、コードをリポジトリからチェックアウトし、ビルドしてパッケージ化し、サーバーにダンプして、テストできるようにする継続的な統合スイートです。 MavenまたはAntをビルドツールとして使用できます。

要約すると、JenkinsはMavenを継続的な統合のためのビルドツールとして使用できます。 CIを行わないことを選択した場合、JenkinsなしでMavenを使用できます。

24
duffymo

Jenkins Maven plugin wiki page の最初の段落では、JenkinsとMavenの相互作用について説明しています。

「Jenkinsジョブの管理は、特に多数のジョブ間で特定のパラメーターを同一にする必要がある場合は特に多くなります。「jenkins-maven-plugin」を使用すると、ジョブごとに1つの「config.xml」 Maven POM。このようにして、すべてのJenkinsジョブを1か所で制御し、ジョブ間の任意の量の構成を再利用できます。」

3
DavidS

Mavenはビルドツールであり、要するにantの後継です。ビルドとバージョン管理に役立ちます。

ただし、Jenkinsは継続的な統合システムであり、mavenでビルドに使用されます。 Jenkinsを使用して、展開プロセスを自動化できます。新しいコードがコミットされるたびに、すべてのJunitテストケースを自動的に実行し、合格した場合は、プロジェクトをパッケージ化して特定の場所にデプロイします。

1
Preetham R U