gradle vs maven maven plugins
このチュートリアルでは、GradleとMavenの違いについて説明します。また、さまざまなMavenプラグインと構成についても学習します。
Mavenと同様に、GradleはJava開発者がビルドに使用する自動化ツールです。 Gradleはオープンソースツールであり、ドメインに固有の言語を利用し、Groovyで開発されています。
=> ここでPerfectMavenトレーニングガイドを確認してください。
学習内容:
Gradle対Maven
GradleとMavenの主な違いを以下に表に示します。
Gradle | Maven |
---|---|
パフォーマンスの点では、Gradleは現在実行中のタスクのみを処理し、提供される入力または出力は処理しないため、より優れています。 | Mavenは、プロジェクトの作成に以前のビルドアーティファクトまたはキャッシュを使用しないため、新しいプロジェクトの生成に必要な時間が長くなります。 |
Groovyで開発された自動化ビルドシステムです | これは、ビルドおよびプロジェクト管理ツールです。 |
Gradleは、プロジェクトビルド用のxmlファイルによって駆動されるのではなく、ドメイン固有の言語–Groovyを使用します。プロジェクト情報はGradleツールに保存されます。 | Mavenは、依存関係、プラグイン、プロファイルなどに関する情報を含むxmlファイルによって駆動されます。 |
Gradleは段階的に機能し、ビルドをより迅速に完了します。 | Mavenはインクリメンタルアプローチを採用しておらず、ビルドタイミングの点でGradleよりも低速です。 |
Gradleスクリプトはシンプルで、長くはなく、簡単に理解できます。 | Mavenには、説明的で長く、簡単に理解できないxmlファイルがあります。 |
Gradleは、IDEをサポートするツールで利用できる多数のオプションに関して多くの柔軟性を備えているため、簡単にカスタマイズできます。 | Mavenのカスタマイズは簡単ではなく、IDEをサポートしていないために不可能な場合もあります。 |
Gradleツールの目的は、プロジェクトに新しい機能を追加することです。 | Mavenツールの目的は、プロジェクトを一定の時間内に完了することです。 |
Gradleでは、Javaコンパイルは必須の手順ではありません。 | Mavenでは、コンパイルは必須のステップです。 |
Gradleは比較的最新のツールであり、そのユーザー数は限られています。 | Mavenはおなじみのツールであり、Java開発者の間で人気があります。 |
xmlを使用せずに、プロジェクトの多数の依存関係をGradleに追加できます。 | 多数の依存関係をxmlファイル(pom)に追加することでプロジェクトに追加できるため、Gradleよりも複雑で管理が困難になります。 |
Build.gradleファイルには、group、baseName、versionなどの要素が含まれています。 | Pom.xmlファイルには、、、などの要素が含まれています。 |
MavenとGradleの違いはほとんどありません
Gradleは、実行する必要のあるタスクのグループで構成されています。 Mavenには、一定で正確なフェーズのモデルがあります。 Mavenの目標はプロジェクトのフェーズにリンクされており、各目標はGradleのタスクに似ています。
パフォーマンス
パフォーマンスに関する限り、GradleとMavenはどちらも、異なるモジュールで複数のビルドを並行して実行できます。
ただし、Gradleはインクリメンタルビルドアプローチに従い、タスクが変更されているかどうかを確認し、更新されるファイルのみを処理します。
以下にリストされている機能により、Gradleのパフォーマンスが向上します。
- インクリメンタルな方法でのJavaクラスのコンパイル。
- 同様の入力で他のGradleビルドのビルドアーティファクトを再利用します。
- APIのより多くの使用。
- コンパイラデーモンの助けを借りてより高速なコンパイル。
ビルドキャッシュ管理により、GradleはMavenよりもはるかに高速になります。
柔軟性
Gradleは、最も基本的な方法で拡張できるように設計されているため、AndroidのビルドツールとしてGoogleによって使用されています。 Gradleのモデルは、CまたはC ++の開発に利用でき、他の環境に拡張できます。
Mavenは簡単にカスタマイズすることはできず、実行できないことがよくあります。これにより、複雑な要件や排他的な要件に対処する必要がない場合でも、Mavenビルドを簡単に理解できます。ただし、Gradleは簡単にカスタマイズして使用できます。
Gradleは、ビルドスキャンでコーディング、デバッグ、ビルド最適化タスクを行うための興味深いインタラクティブなWebUIを提供します。ビルドの傾向、履歴、およびその他のパラメーターに関する重要な情報を提供します。
依存関係の管理
Gradleには、Mavenよりも優れたAPIと依存関係の実装があります。その上、それは同時キャッシュを可能にします。これは、複数のプロジェクトが相互に上書きされることなく共通のキャッシュを利用できることを意味します。 Gradleにはチェックサムがあり、リポジトリとともにキャッシュを同期します。
次のような依存関係管理の特徴がいくつかあります。
- 互換性のあるライブラリの置換ルール。
- ReplacedByルール。
- プロジェクトの依存関係を外部のものと復元します。その逆も同様です。
GradleとMavenはどちらも、動的で推移的な依存関係を持っています。 Mavenにはローカル、セントラル、リモートのリポジトリがあり、GradleにはJCenterがあります。また、組織内にカスタマイズされたリポジトリがあります。
GradleとMavenのコーディング例
2.0.0 com.softwareTest Java-builds jar 2.0 j unit junit 2.10 org.apache.maven.plugins maven-surefire-plugin 2.2.1
jarファイルを生成するMavenゴールを実行するには、次のMavenコマンドを使用します。
最高の無料のPCチューンアップソフトウェア
mvn package
したがって、pom.xmlファイルは記述的であり、複数のタスク、構成、および依存関係を持つMavenプロジェクトには長いxmlファイルが含まれることがわかります。
同じ結果を実行する対応するbuild.gradleコードを以下に示します。
apply plugin:'java' apply plugin:'maven' group = 'com.softwareTest' version ='2.0' repositories { mavenCentral() } dependencies { testCompile group:'junit', name:'junit', version:'2.10' }
したがって、Mavenと比較するとGradleスクリプトが短いことがわかります。以下のコマンドは、タスクのグループを実行するために使用されます。
gradle tasks –all
GradleはMavenよりも機能が優れていることがわかります。ただし、Gradleのこれらすべての追加機能が必要ない場合もあります。そのため、Mavenは小さなプロジェクトに適していますが、Gradleは主に大きなプロジェクトで使用されます。
GradleとMavenの基本コマンド
次の表に、GradleとMavenの基本的なコマンドをいくつか示します。
目的 | Gradleコマンド | Mavenコマンド |
---|---|---|
確実な | JUnitテストは、分離されたクラスローダーで実行されます。 | |
WAR / EAR / JARを生成するには | gradleアセンブル | mvnパッケージ |
実行してコンパイルするには | gradleテスト | mvnテスト |
ビルドのディレクトリを削除します | gradle clean | mvn clean |
Eclipseと統合する | gradle eclipse | mvn eclipse:eclipse |
インストール用 | gradleインストール | mvnインストール |
バージョンを取得するには | gradleバージョン | mvn -version |
GradleをMavenに、またはその逆に変換できます。
MavenをGradleに変更するには、以下の手順に従います。
#1) Mavenプロジェクトフォルダー(pom.xmlファイルの場所)に移動します。
#二) コマンドを実行します gradleinit。
これにより、Gradleビルドが同時に生成されます settings.gradle ファイルと build.gradle ファイルが作成されます。
GradleをMavenに変更するには、以下の手順を順番に実行します。
#1)build.gradle ファイルにはMavenプラグインが必要です。
#2)build.gradle ファイルには次のコードブロックが必要です。
apply plugin: 'java' apply plugin: 'maven' group = 'com.test' version = '0.4' dependencies { compile 'commons-lang:commons-lang:2.3' }
#3) 次に実行します gradleインストール。
これにより、pomサブフォルダー内にpom-default.xmlファイルが生成されます。
Mavenの構成
使用法とビルドされたプロジェクトのMaven構成情報は、次の場所に残ります。
- MAVEN_OPTs環境変数 :Java仮想マシン(JVM)の起動に必要な情報が含まれており、JVMのメモリ設定を-Xms256m-Xmx512mの値に設定できるなどの追加機能も提供します。
- Settings.xmlファイル: このファイルは、ディレクトリUSER_HOME /.m2にあります。このファイルは、Mavenで構築されたすべてのプロジェクトで使用される構成の大部分を処理します。
- .mvnフォルダー: このフォルダは、プロジェクトディレクトリの最上位にある場所を見つけます。ファイルjvm.config、maven.config、およびextensions.xmlには、プロジェクト固有の構成に関する情報が含まれています。
- .mvn /extension.xmlファイル
- .mvn /maven.configファイル
- .mvn /jvm.configファイル
Mavenの構成は、以下のレベルで行われます。
- インストール: これは、Mavenのインストール中に対応されます。
- 事業: これは、pom.xmlファイルに保持されている静的なものです。
- ユーザー: これは特定のユーザー向けに構成されています。
プロジェクト構成はプロジェクト全体に適用され、他の構成(インストールとユーザー)は作業環境に適用されます。インストールとユーザー構成を共有プロジェクトデータの一部として追加することはできません。
ローカルリポジトリの構成
ローカルリポジトリの場所は、ユーザーの構成の一部として変更できます。デフォルトでは、場所は.m2ディレクトリです。これは、以下のxmlコードによって実現されます。
path to the directory
プロキシ構成
プロキシ設定は設定で維持できます。
並列アーティファクト解決構成
Mavenは、さまざまなグループから一度に最大5つのアーティファクトをダウンロードします。
2つのアーティファクトをダウンロードするには、次のコマンドを指定する必要があります。
mvn -Dmaven.artifact.threads = 2検証
展開とセキュリティ構成
このセクションでは、特定のプロジェクトにデプロイされるリポジトリについて説明します。ユーザー名、パスワード、その他のセキュリティパラメータなどの情報をそのプロジェクト内に配置することはできません。この情報を提供するには、プロジェクト内のデプロイメントリポジトリのIDにマップされた情報を追加する必要があります。
これは、以下のxmlコードによって実現されます。
testrepository test password
プロファイル構成
Mavenリポジトリーは、プロファイルに入れるように構成できます。一度に、複数のプロファイルが存在する可能性があります。要件に応じて、1つのアクティブなプロファイルを保持して、さまざまな環境に切り替えることができます。
その他のオプション構成
各プロジェクトに固有ではない環境固有の構成を作成するには、設定を構成する必要があります。
経験豊富なPDFのSQL開発者インタビューの質問と回答
Mavenには、インストールディレクトリまたはユーザーホームディレクトリにある設定ファイルが含まれています。以下に示すように、いくつかの環境パラメーターの構成を処理します。
- サーバーのユーザー名とパスワード
- リポジトリマネージャの場所
- HTTPプロキシサーバー
セキュリティ構成
Maven 2.1.0以降までは、設定ファイル内のパスワードを暗号化するオプションがあります。ただし、暗号化を行う前にマスターパスワードを作成する必要があります。
Mavenプラグイン
Mavenプラグインは、Mavenフレームワークの不可欠な部分です。各プラグインは特定のタスクに割り当てられます。
以下に示すように、プラグインには2つのタイプがあります。
- プラグインをビルドする :これらはビルド時に実行され、pom.xmlファイルのビルドタグの下に記述されている必要があります。
- レポートプラグイン :これらはサイト生成時に実行され、pom.xmlファイルのreportingタグの下に記述されている必要があります。
以下のリストは、Mavenコアプラグインの一部を示しています。
コアプラグイン | 実行されたタスク |
---|---|
掃除 | ビルド後にアーティファクトをクリーンアップします。 |
コンパイラ | Javaソースコードがコンパイルされます。 |
デプロイ | ビルドアーティファクトはリモートリポジトリにデプロイされます。 |
インストール | ビルドアーティファクトはローカルリポジトリにインストールされます。 |
ベリファイア | 統合テストに使用されます。 |
リソース | 出力ディレクトリは、Jarに含めるためのリソースのコピーを取得します。 |
地点 | 現在のプロジェクトサイトが生成されます。 |
ベリファイア | 統合テストに使用され、特定の条件をチェックします。 |
Mavenレポートプラグインの一部を以下に示します。
レポートプラグイン | 実行されたタスク |
pmd | pmdレポートが生成されます。 |
変更ログ | SCMからの最近の変更は、リストの形式で生成されます。 |
変更 | 課題トラッカーに関するレポートが生成されます。 |
checkstyle | Checkstyleレポートが生成されます。 |
Javadoc | プロジェクトのJavadocが生成されます。 |
確実なレポート | 単体テストの結果は、レポートの形式で生成されます。 |
リンクチェック | プロジェクトドキュメントのリンクチェックレポートが生成されます。 |
jxr | ソース相互参照が生成されます。 |
FAQセクション
Q#1)MavenはGradleよりも優れていますか?
回答: Gradleは、増分および作業回避アプローチを使用します。 Gradleは入力タスクと出力タスクを監視し、必要なタスクを実行します。ただし、小規模なプロジェクトの場合はMavenが引き続き優先され、Gradleは大規模で複雑なプロジェクトに適しています。
Q#2)GradleがMavenよりも速いのはなぜですか?
回答: Gradleの以下のアプローチにより、GradleはMavenよりもはるかに高速です。
- 建物の詳細をメモリ内で準備し続けるGradleデーモンの使用。
- インクリメンタル方式でのコンパイル。
- 以前のビルドからアーティファクトを取得するビルドキャッシュの使用。
- Javaプラグインを使用したGradleによる効率的な方法での依存関係のモデリング。
Q#3)Maven Gradleとは何ですか?
回答: Gradleは、ApacheAntとApacheMavenの機能に基づいて開発された自動化ビルドツールです。これはオープンソースであり、Groovyベースのドメイン関連言語で動作します。これは、プロジェクトの依存関係と構成のためにMavenによって使用されるpom.xmlファイルによって駆動されません。
Q#4)Mavenが好まれるのはなぜですか?
回答:
次の利点があるため、Mavenが推奨されます。
- すべてのプロジェクト依存関係の中央リポジトリ。
- 組織内で共通のフォルダー構造を維持します。
- Gitなどのバージョン管理ツールやJenkinsなどの継続的インテグレーションツールと統合できます。
- ビルドプロセスは、よりシンプル、簡単、そして均一になります。
Q#5)MavenはJava専用ですか?
回答: Mavenは、Javaプロジェクトで一般的に使用されるプロジェクト管理およびビルドツールです。ただし、Ruby、C#、Scalaなどで開発されたプロジェクトには使用できます。
Q#6)EclipseでMavenが使用されるのはなぜですか?
回答: Eclipse IDEは、依存関係と構成をMavenリポジトリーから自動的にダウンロードします。また、Eclipseを使用して、新しいMavenプロジェクトの作成、既存のMavenプロジェクトおよびpom.xmlのサポートを行うことができます。
Q#7)Gradleとは何語ですか?
回答: Gradleは、ビルド用にDSLとも呼ばれるドメイン関連の言語を提供します。この言語は、GroovyとKotlinで入手できます。
C ++の基本的な面接の質問
Q#8)Mavenの利点は何ですか?
Mavenには、次のようないくつかの依存関係があります。
- すべてのプロジェクト依存関係の中央リポジトリ。
- 組織内で共通のフォルダー構造を維持します。
- Gitなどのバージョン管理ツールやJenkinsなどの継続的インテグレーションツールと統合できます。
- ビルドプロセスがよりシンプルで簡単になります。
結論
このチュートリアルでは、GradleとMaven、GradleをMavenに、またはその逆に変換する方法、Maven構成、プラグインなどの概念について説明しました。また、MavenとGradleの基本的なコマンドのいくつかについても説明しました。
Mavenプラグインに関する限り、レポートおよびコアMavenプラグインのいくつかについて説明しました。
Mavenは市場でホットなトピックであるため、主題の理解を深め、このツールに関する専門知識を開発する必要があります。
=> EasyMavenトレーニングシリーズをお読みください。
推奨読書
- Mavenとは-初心者向けのMavenチュートリアル
- SeleniumでGradleプロジェクトを作成する方法
- Gradleを使用してプロジェクトをビルド、テスト、デプロイする方法
- ガトリングスクリプトとMavenアーキタイプを使用したガトリングプロジェクトの作成
- MavenSurefireプラグインを使用したMavenとTestNgの統合
- MavenのPOM(プロジェクトオブジェクトモデル)とpom.xmlとは
- Eclipse JavaIDEを使用したMavenの構成
- 31最もよくあるMavenインタビューの質問と回答