2012-08-09 58 views

回答

110

插件和依賴項都是Jar文件。

但是它們之間的區別是,maven中的大部分工作都是使用插件完成的;而依賴關係只是一個Jar文件,將在執行任務時添加到類路徑中。

例如,您使用編譯器插件來編譯java文件。您不能使用編譯器插件作爲依賴項,因爲它只會將插件添加到類路徑中,並且不會觸發任何編譯。在編譯文件時要添加到類路徑中的Jar文件將被指定爲依賴項。

同樣適用於您的場景。你必須使用spring-plugin來執行一些spring可執行文件[我不確定使用了哪些spring-plugins。我只是在這裏猜測]。但是你需要依賴來執行這些可執行文件。 Junit在依賴項下被標記,因爲它被surefire插件用於執行單元測試。

因此,我們可以說,插件是執行任務的JAR文件,和依賴是它提供的類文件,執行該任務的罐子。

希望能回答你的問題!

+0

感謝您的解釋,現在我知道了明確的:) – Soumyaansh 2012-08-13 04:43:45

+1

尼斯解釋。 – bugCracker 2014-10-14 13:28:49

+0

我能否告訴我執行階段和目標之間有什麼不同?因爲我知道這個階段正在討論maven的生命週期......但是爲什麼又要進入目標?任何提示?有時候我看到人們把生命週期關鍵字放在了目標...... ??? (?。?) – taymedee 2015-01-04 13:52:02

28

Maven本身可以被描述爲食物處理器,它有很多不同的單位可以用來完成不同的任務。這些單位被稱爲插件。例如,編譯你的項目maven使用maven-compiler-plugin,運行測試 - maven-surefire-plugin等等。

maven的依賴關係是你的項目依賴的類的一個打包塊。例如,如果您希望能夠編寫JUnit測試,則必須使用JUnit註釋和類,因此您必須聲明您的項目依賴於JUnit。

+0

感謝您的快速回復,抱歉,但我仍然很困惑,我知道JUnit的也是一個框架和(休眠,彈簧)還附帶下框架而已,所以在情況下,這意味着(休眠,彈簧),也可配置在依賴標籤?我希望你有我的問題。 – Soumyaansh 2012-08-09 11:24:43

+0

是的,據我所知,Spring Maven插件沒有這樣的東西。通常,Spring庫(或Hibernate或JUnit或TestNG等)被聲明爲項目的依賴項。如果你是新的Maven時,我建議你閱讀[這](http://www.sonatype.com/books/mvnref-book/reference/)很不錯的書。 – 2012-08-09 11:45:14

+0

感謝您的鏈接,我一定會通過它! – Soumyaansh 2012-08-13 04:45:46

3

插件是用於添加功能,以Maven本身(如添加eclipse支持或MavenSpringBoot支持等)。源代碼需要依賴性來通過任何Maven階段(例如,compiletest)。在JUnit的情況下,因爲測試代碼基本上是您的代碼庫的一部分,並且您在測試套件內部調用JUnit特定命令,並且這些命令不由Java SDK提供,因此JUnit必須存在於Maven處於測試階段並且已處理通過在您的pom.xml文件中提及JUnit作爲依賴關係。

3

如果你從前端的背景和我一樣到來,並熟悉步兵和NPM,認爲它是這樣的:

首先你會跑,說,npm install grunt-contrib-copy --save-dev。這就像maven的<dependency></dependency>。它下載執行構建任務所需的文件。

,那麼你會配置任務Gruntfile.js

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

這就好比Maven的<plugin>/<plugin>。您正在告訴構建工具如何處理由npm/<dependency></dependency>下載的代碼。

當然,這不是一個確切的比喻,但足以幫助你的包裹頭部周圍。

相關問題