在插件中使用maven版本

时间:2012-07-26 11:30:35

标签: java maven maven-2 maven-plugin maven-3

我正在给Maven写一个插件。我想根据Maven版本(使用我的插件的人)自定义动作 类似的东西:

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

我发现了build-helper-maven-plugin,但我不知道如何使用它来完成这项工作。

2 个答案:

答案 0 :(得分:1)

你需要将maven引用注入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;

答案 1 :(得分:0)

我一直在寻找你的问题的答案,我得出结论,没有简单的方法来获得maven版本,或者至少我找不到它。我能找到的最好的是maven-enforcer-plugin包含查找maven版本的代码。但是,在查看maven-enforcer-plugin源代码时,它有点复杂,需要通过plexus(Maven使用的IoC容器)获取RuntimeInformation实例的句柄。

我建议您查看maven-enforcer-plugin,看看您是否可以使用他们所做的。特别注意RequireMavenVersion和EnforcerMojo类。