我指的是通常运行时返回的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,谢谢你为我指出正确的方向