0

我正在为 Maven 编写一个插件。我想根据 Maven 版本(使用我的插件的人)自定义操作,例如:

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

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

4

2 回答 2

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;
于 2012-07-26T11:48:29.460 回答
0

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

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

于 2012-07-31T19:24:46.193 回答