我指的是你经常运行
时返回的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版本运行验证,谢谢
答案 0 :(得分:1)
您可以使用以下代码段获取有关当前Maven版本的信息:
@Component
private RuntimeInformation runtime;
public void execute() {
ArtifactVersion version = runtime.getApplicationVersion();
getLog().info("Version: " + version);
...
}
runtime
还提供有关getBuildNumber()
,getIncrementalVersion()
,getMajorVersion()
,getMinorVersion()
和getQualifier()
的信息。
这应该符合你的需要。
答案 1 :(得分:1)
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,谢谢你指出我正确的方向