我正在爲Maven編寫一個插件。我想自定義Maven的版本行動是否取決於(人誰使用我的插件) 類似:在插件中使用maven版本
if (MavenVer == "2.2.1")
//do some things
if (MavenVer == "3.0")
//do another things
我發現了集結幫手 - Maven的插件,但我不舒爾如何使用它來做到這一點工作。
我正在爲Maven編寫一個插件。我想自定義Maven的版本行動是否取決於(人誰使用我的插件) 類似:在插件中使用maven版本
if (MavenVer == "2.2.1")
//do some things
if (MavenVer == "3.0")
//do another things
我發現了集結幫手 - Maven的插件,但我不舒爾如何使用它來做到這一點工作。
我一直在尋找一個答案到你的問題,我已經得出結論,沒有簡單的方法來獲取Maven版本,或者至少我找不到它。我能找到的最好的是maven-enforcer插件包含查找maven版本的代碼。然而,在查看maven-enforcer插件源代碼時,它有點複雜,需要通過plexus(Maven使用的IoC容器)獲取RuntimeInformation實例的句柄。
我建議你看看maven-enforcer-plugin,看看你是否可以使用他們做的。請特別注意RequireMavenVersion和EnforcerMojo類。
你需要注入行家參考到plugina和簡單地使用API http://maven.apache.org/ref/2.2.1/maven-project/apidocs/org/apache/maven/project/MavenProject.html#getVersion()
代碼注入檢查版本
public class MyMojo extends AbstractMojo {
/**
* @component
*/
ArtifactFactory factory;
/**
* @component
*/
ArtifactResolver artifactResolver;
/**
* @parameter default-value="${project.remoteArtifactRepositories}"
*/
List remoteRepositories;
/**
* @parameter default-value="${localRepository}"
*/
ArtifactRepository localRepository;
/**
* @parameter default-value="${project}"
*/
MavenProject mavenProject;
您上面提到的getVersion爲我提供了我的插件版本:1.0-SNAPSHOT。我需要知道運行我的插件的Maven版本。 – Mic 2012-07-26 16:11:13
插件的版本是什麼,項目的版本是什麼?我想問題是當前版本的插件1.0-SNAPSHOT,只要你將插件連接到你的插件項目,我就會獲得1.0-SNAPSHOT。我認爲一旦你的插件將被附加到「真實(非插件)」項目,你會得到實際的項目版本 – 2012-07-26 16:19:27
對不起,但它不是我的意思。讓我解釋一下:當你進入http://maven.apache.org/上的「下載」部分時,你會看到有三個可用版本。 Maven 3.0.4,Maven 2.2.1和Maven 2.0.11。我想知道哪一個用於將我的插件附加到「真實(非插件)」項目:) – Mic 2012-07-26 16:29:29
您能否詳細說明Maven版本的哪種操作是不同的? – khmarbaise 2012-07-26 11:40:33
我使用的外部插件有mvn2和mvn3不同的API。所以我需要在runtmie上認出它。 – Mic 2012-07-26 16:09:10