java example cat_java maven hello example
Maven插件開發
From:
Maven 插件開發—-讓maven使用更加靈活
對
于習慣于使用maven構建、管理項目的人來說,maven就是項目開發、測試、部署的一把利器:對類庫的集中管理;依賴傳遞、繼承、重用性高;對整個項
目開發生命周期的完整支持,從頭到尾只需要幾個簡單的命令就可以快速地遍歷整個開發周期,減輕了配置管理的工作量。這些優秀的功能都是通過maven插件
庫里提供的豐富插件來完成的。因此,掌握maven插件開發、在實際工作中根據自己的需要開發適合自己需求maven插件,是很有必要的。
這篇文章先從動手實踐開始,迅速開發出自己的一個maven插件,然后根據主要構建過程和配置予以簡單說明。
一,快速開發你的第一個插件
1,創建一個maven-plugin目錄,并通過CMD程序從后臺進入此目錄。
2,運行命令:mvn archetype:create -DgroupId=com.taobao.maven -DartifactId=maven-hello-plugin -DarchetypeArtifactId=maven-archetype-mojo
3,進入maven-hello-plugin目錄,運行命令:mvn eclipse:eclipse構建eclipse工程。
4,通過eclipse import工程,刪除包下面自動生成的java文件,新建GreetingMojo.java和GoodByeMojo.java,分別對應打招呼、再見兩個動作。
GreetingMojo.java的內容如下:package com.taobao.maven;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
/**
* @goal greeting
*/
public class GreetingMojo extends AbstractMojo {
/**
* @parameter expression=”${greeting.words}” default-value=”Hello to you!”
*/
private String words ;
public void execute() throws MojoExecutionException {
getLog().info(words);
}
}
GoodByeMojo.java的內容如下:package com.taobao.maven;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
/**
* @goal goodBye
*/
public class GoodByeMojo extends AbstractMojo {
/**
* @parameter expression=”${goodBye.words}” default-value=”goodBye to you!”
*/
private String words;
public void execute() throws MojoExecutionException, MojoFailureException {
getLog().info(words);
}
}
pom.xml中的依賴為:
org.apache.mavengroupId>
maven-plugin-apiartifactId>
2.0version>
dependency>
com.alibaba.externalgroupId>
test.junitartifactId>
4.4version>
testscope>
dependency>
5,??? 文件編寫完成后回到cmd命令行,在項目的pom文件目錄處運行install命令將插件安裝到本地repository:mvn clean install
6,??? 安裝成功后繼續運行如下命令查看插件的運行情況:
運行:mvn com.taobao.maven:maven-hello-plugin:1.0-SNAPSHOT:greeting
,可以看到控制臺看到輸出:“Hello to you!”;這個輸出是插件的默認參數:default-value=”Hello to you!”
運行mvn com.taobao.maven:maven-hello-plugin:1.0-SNAPSHOT:goodBye
,可以在控制臺看到輸出:“goodBye to you!”;這個輸出是插件的默認參數:default-value=”goodBye to you!”
運行:mvn com.taobao.maven:maven-hello-plugin:1.0-SNAPSHOT:greeting -Dgreeting.words=”welcome!”
可以在控制臺看到輸出:“welcome!”;這個在命令中明確指定插件的參數,因此輸出的是指定的參數“welcome!”。
運行mvn com.taobao.maven:maven-hello-plugin:1.0-SNAPSHOT:goodBye -DgoodBye.words=”see you!”
可以在控制臺看到輸出:“see you!”;這個在命令中明確指定插件的參數,因此輸出的是指定的參數“see you!”。
7,至此,一個“見面寒暄”的簡單maven插件基本完成。
二,插件開發過程的相關說明
1,MOJO
Maven 通過插件動作完成大多數構建任務。可以把 Maven 引擎認為是插件動作的協調器。插件中的每個任務goal稱作一個 Mojo(Maven plain?Old?Java?Object)。項目中每一個Mojo都要實現org.apache.maven.plugin.Mojo接口,上面的插件示例的Mojo通過擴展org.apache.maven.plugin.AbstractMojo類實現了該接口。Mojo提供過了如下的方法:void setLog( org.apache.maven.monitor.logging.Log log )
每一個Mojo實現都必須提供一種方法讓插件能夠和某個特定目標的過程相交流。該目標成功了么?或者,是否在運行目標的時候遇到了問題?當Maven加載并運行Mojo的時候,它會調用setLog()方法,為Mojo實例提供正確的日志目標,以讓你在自定義插件中使用。protected Log getLog()
Maven會在Mojo運行之前調用setLog()方法,然后你的Mojo就可以通過調用getLog()獲得日志對象。Mojo應該去調用這個Log對象的方法,而不是直接將輸出打印到標準輸出或者控制臺。void execute() throws org.apache.maven.plugin.MojoExecutionException
輪到運行目標的時候,Maven就會調用該方法。
Mojo
接口只關心兩件事情:目標運行結果的日志記錄,以及運行一個目標。當編寫自定義插件的時候,需要擴展AbstractMojo。AbstractMojo
處理setLog()和getLog()的實現,并包含一個抽象的execute()方法。在擴展AbstractMojo的時候,你所需要做的只是實現
execute()方法。
2,Phase
Maven 對構建生命周期的固定理解包含了許多不同的階段,如下表:
...省略
3,插件組成
每一個mojo都由一些注解annotation來描述,這些注解是在java類的上面標注。常用的幾個注解如下:
execute:注解形式:a), @execute phase=”” lifecycle=””;
b), @execute phase=””
c), @execute goal=””
當這個目標goal被調用時,它會先調用一個平行的生命周期,在制定的階段結束。如果插件沒有被指定階段,這一目標將會單獨執行。
goal:注解形式:@goal
用戶在命令行下直接調用插件的目標goal,或者在項目的pom文件中通過配置調用這個goal。
phase:注解形式:@phase
綁定這個mojo到標準構建生命周期里對應的階段。
對于一個mojo里的變量參數,也有一些常用的注解:
configuration:注解形式:@parameter expression=”${aSystemProperty}” default-value=”${anExpression}”
對參數指定一個計算表達式、在mojo構建時將計算結果注入到此變量中,同時也可以給定一個默認值。這個參數值也可以在pom文件中予以配置。
三,在其他工程中使用此插件
伴隨插件開發完成,在被其他項目使用時有比較多的、靈活的配置,接下來也通過一個示例來使用這個插件。
1,回到maven-plugin目錄,創建插件測試工程:mvn archetype:create -DgroupId=com.taobao.maven -DartifactId=plugin-test -Dpackaging=jar
2,在測試工程的pom文件中加入插件依賴:com.taobao.maven
maven-hello-plugin
1.0-SNAPSHOT
3,在上述配置后可以使用這個插件了,但是這個插件在開發的時候并沒有定義插件運行的生命周期,而且,在使用時也希望得到更加靈活的參數配置,因此在使用時大多采用如下的配置:com.taobao.maven
maven-hello-plugin
1.0-SNAPSHOT
compile phase
compile
greeting
hello everyone
test phase
test
goodBye
goodbye everyone
這
個配置對這個插件定義了運行時的生命周期,在編譯compile階段運行插件的greeting 目標,輸出greeting.words是“hello
everyone”;在測試test階段運行插件的goodBye 目標,輸出goodBye.words是“goodbye
everyone”。配置完成后,回到命令行的plugin-test工程目錄下運行:mvn clean
package,即可看到對應階段的輸出信息。
總結
以上是生活随笔為你收集整理的java example cat_java maven hello example的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: u盘制作linux启动盘的文件格式(u盘
- 下一篇: java 邮件 超链接_将Excel范围