日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java example cat_java maven hello example

發布時間:2023/12/2 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。