我正在为 Maven 编写一个插件。我想根据 Maven 版本(使用我的插件的人)自定义操作,例如:
if (MavenVer == "2.2.1")
//do some things
if (MavenVer == "3.0")
//do another things
我发现了 build-helper-maven-plugin 但我不知道如何使用它来完成这项工作。
我正在为 Maven 编写一个插件。我想根据 Maven 版本(使用我的插件的人)自定义操作,例如:
if (MavenVer == "2.2.1")
//do some things
if (MavenVer == "3.0")
//do another things
我发现了 build-helper-maven-plugin 但我不知道如何使用它来完成这项工作。
您需要将 maven 引用注入 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;
我一直在寻找你的问题的答案,我得出的结论是没有简单的方法来获得 maven 版本,或者至少我找不到它。我能找到的最好的是 maven-enforcer-plugin 包含查找 maven 版本的代码。然而,在查看 maven-enforcer-plugin 源代码时,它有点复杂,涉及通过 plexus(Maven 使用的 IoC 容器)获取 RuntimeInformation 实例的句柄。
我建议你看看maven-enforcer-plugin看看你是否可以使用他们所做的。特别注意 RequireMavenVersion 和 EnforcerMojo 类。