閱讀312 返回首頁    go 阿裏雲 go 技術社區[雲棲]


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插件都來自於ApacheCodeHaus

因為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

  上一篇:go SFTP &amp; FTP Upload
  下一篇:go 分享最全國內外公共DNS服務器地址