您如何从自定义 Mojo 中获取 maven 二进制版本



我指的是通常运行时返回的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 版本运行验证,谢谢

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

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

runtime还提供有关getBuildNumber()getIncrementalVersion()getMajorVersion()getMinorVersion()getQualifier()的信息。这应该符合您的需求。

使用 khmarbaise 提到的 getApplicationVersion() 已被弃用,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,谢谢你为我指出正确的方向

相关内容

  • 没有找到相关文章

最新更新