2

我指的是您通常运行时返回的 maven 二进制版本

mvn --version

从返回如下输出的命令行,

Apache Maven 3.0.4
Maven home: /usr/share/maven
Java version: 1.6.0_45, vendor: Sun Microsystems Inc.
Java home: /home/uvindra/Apps/java6/jdk1.6.0_45/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.11.0-15-generic", arch: "amd64", family: "unix"

注意 Maven 版本 3.0.4。从 Java 中的自定义 Maven Mojo 中访问它的最佳方法是什么?是否有可用的属性?

我想对正在执行我的 Mojo 的当前 maven 版本运行验证,谢谢

4

2 回答 2

1

您可以使用以下代码片段获取有关当前 Maven 版本的信息:

@Component
private RuntimeInformation runtime;

public void execute() {
  ArtifactVersion version = runtime.getApplicationVersion();
  getLog().info("Version: " + version);
...
}

runtime提供有关getBuildNumber()getIncrementalVersion()getMajorVersion()和的信息。那应该适合您的需求。getMinorVersion()getQualifier()

于 2014-02-11T09:47:11.683 回答
1

不推荐使用getApplicationVersion()khmarbaise 提到的使用,getMavenVersion()这是推荐使用的功能。您需要包含 maven-core 3.0.2 或更高版本作为使用RuntimeInformation该类的依赖项。

这是完整的用法示例,

所需的 pom 依赖项

<dependency>
   <groupId>org.apache.maven</groupId>
   <artifactId>maven-core</artifactId>
   <version>3.0.2</version>
</dependency>

包导入

import org.apache.maven.rtinfo.RuntimeInformation;

用法

 /**
 *
 * @component
 */
private RuntimeInformation runtime;

public void execute() {
     String version = runtime.getMavenVersion();
     getLog().info("Maven Version: " + version);
     ...
}

@khmarbaise,感谢您为我指明正确的方向

于 2014-02-12T05:24:07.840 回答