2012-08-09 13 views
57

私はmavenツールを使い慣れていません。私はSpringとHibernateでプロジェクトを作っており、プラグインとしてpom.xmlに設定されていますが、JUnitは依存関係のタグが付けられています。私の質問は、プラグインとしての背後にあるロジックと依存関係としてのロジックは何ですか?pom xmlの依存関係とプラグインタグの間の違いは何ですか?

答えて

110

プラグインと依存ファイルの両方がJarファイルです。

しかし、それらの違いは、プラグインを使用して行われることです。依存関係はタスクを実行する間にクラスパスに追加される単なるJarファイルです。

たとえば、コンパイラプラグインを使用してJavaファイルをコンパイルします。コンパイラプラグインを依存関係として使用することはできません。これは、プラグインをクラスパスに追加するだけで、コンパイルをトリガしないためです。ファイルをコンパイルする際にクラスパスに追加されるJarファイルは、依存関係として指定されます。

同じことがシナリオに適用されます。いくつかの春の実行ファイルを実行するには、spring-pluginを使用する必要があります。私はちょうどここに推測している]。しかし、それらの実行可能ファイルを実行するには依存関係が必要です。 Junitはユニットテストを実行するためのsurefire-pluginによって使用されるため、依存関係のタグが付けられます。

したがって、プラグインはタスクを実行するJarファイルであり、依存関係はタスクを実行するためのクラスファイルを提供するJarです。

あなたの質問にお答えします。

+0

説明をいただきありがとうございます。私はそれを明確にしました:) – Soumyaansh

+1

素敵な説明。 – bugCracker

+0

誰かが、実行の段階と目標の違いは何か教えてもらえますか?私はフェーズがメイヴンのライフサイクルについて話していることを知っていた。しかしなぜ再びゴール?何かヒント?時には私は人々がゴールにライフサイクルキーワードを置くのを見ます... ??? (?。?)この@taymedee – taymedee

28

Maven自体は、さまざまなタスクを達成するために使用できる多くの異なるユニットを持つフードプロセッサーとして記述することができます。これらのユニットはプラグインと呼ばれます。たとえば、プロジェクトをコンパイルするには、maven-compiler-pluginを使用して、テストを実行します(maven-surefire-pluginなど)。

依存関係は、プロジェクトが依存しているパッケージされたクラスです。たとえば、JUnitテストを書くことができるようにするには、JUnitアノテーションとクラスを使用する必要があります。したがって、プロジェクトがJUnitに依存していることを宣言する必要があります。

+0

迅速な回答に感謝、私はJUnitのもフレームワークと(休止状態、春)である知っているように申し訳ありませんが、それでも私は混乱していますまた、唯一の枠組みの下に来るので、ケース内の手段(休止状態、春)も設定することができることです依存関係のタグで?私はあなたに私の質問があることを願っています – Soumyaansh

+0

はい、私が知っている限り、Spring Mavenプラグインのようなものはありません。通常、Springのlibs(またはHibernate、JUnit、TestNGなど)は、プロジェクトの依存関係として宣言されます。あなたがmavenに初めているなら、[this](http://www.sonatype.com/books/mvnref-book/reference/)非常に良い本を読むことをお勧めします。 –

+0

リンクをありがとう、私は確かにそれを通過します! – Soumyaansh

3

プラグインは、Mavenに機能を追加するために使用されます(eclipseサポートを追加するか、SpringBootMavenなどに追加するなど)。 Mavenフェーズ(例えば、compileまたはtest)を渡すために、ソースコードによって依存関係が必要です。 JUnitの場合は、テストコードは基本的にコードベースの一部であり、テストスイート内にはで指定されていないコマンドJUnitがあります。したがって、Mavenがテスト段階にあり、これが処理されている必要があります。あなたのpom.xmlファイルの依存関係としてJUnitと言います。

3

あなたは私のようなフロントエンドの背景から来て、うなり声やNPMに精通している場合は、このようにそれを考えるには:

まずあなたは、たとえば、npm install grunt-contrib-copy --save-devを実行します。これは、Mavenの<dependency></dependency>のようなものです。ビルドタスクの実行に必要なファイルをダウンロードします。

それからこれは、Mavenの<plugin>/<plugin>のようなものですGruntfile.js

copy: { 
    main: { 
    src: 'src/*', 
    dest: 'dest/', 
    }, 
} 

でタスクを構成します。npm/<dependency></dependency>でダウンロードしたコードをビルドツールに伝えています。もちろん

これは正確なアナロジーではありませんが、その周りにあなたの頭をラップ助けるために十分に近いです。

関連する問題