maven詳解之生命周期與插件(二)
插件配置
定義解釋:插件目標
當我們了解了maven插件之後,我們發現如果為每一個功能編寫一個獨立的插件顯然是不可取的,因為這些任務背後有很多可以複用的代碼,因此,把這些功能聚集在一個插件裏,每一個功能我們就稱之為一個插件目標。
舉個例子:
maven-dependency-plugin有十多個目標,每個目標對應了一個功能
分析項目依賴:dependency:analyze
列出項目依賴樹:dependency: tree
列出項目所有已解析的依賴:dependency:list
POM中插件全局配置
有些參數的值從項目的創建到項目發布都不會改變,或者說很少改變,對於這種情況,就可以在pom.xml中進行全局配置。
例:配置一個通用的Java編譯版本
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.1</version> <configuration> <source>1.6</source> <target>1.6</target> </configuration> </plugin> </plugins> </build>
這樣,不管綁定到compile階段的maven-compiler-plugin: compile 還是綁定到test-compiler 階段的maven-compiler-plugin: testCompiler 任務,就都能夠使用該配置,基於Java1.6版本進行編譯。
POM中插件任務配置
獲取插件信息
在線插件信息
Maven插件的來源:基本所有主要的maven插件都來自於Apache和CodeHaus
因為maven本身是屬於Apache的,所有它有很多官方的插件,而且他們具有很好的穩定性
除了Apache之外,托管於Codehaus上的Mojo項目也提供了大量的maven插件。(注:這些插件的文檔和可靠性相對較差,使用的時候出現問題,隻能自己查看源碼)
插件解析機製和常見問題
與依賴構件一樣,插件構件同樣基於坐標存儲在Maven倉庫中。在需要的時候,Maven會從本地倉庫尋找插件,如果不存在,則從遠程插件倉庫查找。找到插件之後,再下載到本地倉庫使用
注:依賴的遠程倉庫 != 插件的遠程倉庫,Maven會區別對待他們。
Maven需要的依賴在本地倉庫中不存在時,Maven會去配置的遠程倉庫中查找
Maven需要的插件在本地倉庫中不存在時,Maven不會去這些遠程倉庫查找。
如何配置插件的遠程倉庫
Maven的插件遠程倉庫使用<pluginRepositories>和><pluginRepository>進行配置
Maven內置的插件遠程倉庫配置如下:它關閉了對SNAPSHOT的支持,防止不穩定的構建
<pluginRepositories> <pluginRepository> <id>central</id> <name>Maven Plugin Repository</name> <url>https://repo1.maven.org/maven2</url> <layout>default</layout> <snapshots> <enabled>false</enabled> </snapshots> <releases> <updatePolicy>never</updatePolicy> </releases> </pluginRepository> </pluginRepositories>
簡單配置:
1.2省略groupId配置:
Maven針對其官方的插件提供了一種簡單的配置策略,其官方的groupId為:org.apache.maven.plugins,在配置的時候可以省略該配置,Maven在解析該插件的時候,會自動用默認的groupId補齊。但是一般情況下不推薦此種用法,因為隻剩下了一行配置,而且容易對新手造成費解。
2.省略版本配置:
maven的POM是采用了繼承的機製(在maven的聚合與繼承中有詳細介紹),Maven中有一個超級POM,所有的項目都繼承了這個超級POM的配置,因此用戶不加任何配置,Maven使用核心插件的時候,他們的版本就已經確定了。
maven-clean-plugin
maven-compiler-plugin
maven-surefire-plugin
如果我們在配置的時候沒有配置插件的版本,Maven會遍曆本地倉庫和所有遠程插件倉庫,將該路徑下的倉庫元數據歸並後,就能計算出latest和release版本。
在Maven2中::::如果不配置版本,那麼會默認的被解析到latest版本,這個版本可能會出現潛在的問題,比如說,這個版本是快照版本
在Maven3中::::如果不配置版本,那麼會默認的被解析到release版本,這樣就解決了穩定性問題,但是這也可能存在潛在問題,比如說,新版本的行為與舊版本的行為發生了變化,這樣也會出現構建失敗
所以:使用插件的時候,應該顯示的設定版本。
佛之孝:眾生皆父母,百善孝為先。
明白心佛眾生三無差別,同體名大悲的道理,才知道,關愛他人就是關愛自己,救度他人就是救度自己,對人好,才是對自己好,於是,把眾生都當做自己的父母來救度,此為佛之孝道。
最後更新:2017-04-03 05:39:47