2012-07-26 81 views
0

我正在爲Maven編寫一個插件。我想自定義Maven的版本行動是否取決於(人誰使用我的插件) 類似:在插件中使用maven版本

if (MavenVer == "2.2.1") 
    //do some things 
if (MavenVer == "3.0") 
//do another things 

我發現了集結幫手 - Maven的插件,但我不舒爾如何使用它來做到這一點工作。

+0

您能否詳細說明Maven版本的哪種操作是不同的? – khmarbaise 2012-07-26 11:40:33

+0

我使用的外部插件有mvn2和mvn3不同的API。所以我需要在runtmie上認出它。 – Mic 2012-07-26 16:09:10

回答

0

我一直在尋找一個答案到你的問題,我已經得出結論,沒有簡單的方法來獲取Maven版本,或者至少我找不到它。我能找到的最好的是maven-enforcer插件包含查找maven版本的代碼。然而,在查看maven-enforcer插件源代碼時,它有點複雜,需要通過plexus(Maven使用的IoC容器)獲取RuntimeInformation實例的句柄。

我建議你看看maven-enforcer-plugin,看看你是否可以使用他們做的。請特別注意RequireMavenVersion和EnforcerMojo類。

1

你需要注入行家參考到plugina和簡單地使用API​​ http://maven.apache.org/ref/2.2.1/maven-project/apidocs/org/apache/maven/project/MavenProject.html#getVersion()

http://maven.apache.org/ref/3.0.3/maven-core/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; 
+0

您上面提到的getVersion爲我提供了我的插件版本:1.0-SNAPSHOT。我需要知道運行我的插件的Maven版本。 – Mic 2012-07-26 16:11:13

+0

插件的版本是什麼,項目的版本是什麼?我想問題是當前版本的插件1.0-SNAPSHOT,只要你將插件連接到你的插件項目,我就會獲得1.0-SNAPSHOT。我認爲一旦你的插件將被附加到「真實(非插件)」項目,你會得到實際的項目版本 – 2012-07-26 16:19:27

+0

對不起,但它不是我的意思。讓我解釋一下:當你進入http://maven.apache.org/上的「下載」部分時,你會看到有三個可用版本。 Maven 3.0.4,Maven 2.2.1和Maven 2.0.11。我想知道哪一個用於將我的插件附加到「真實(非插件)」項目:) – Mic 2012-07-26 16:29:29

相關問題