Java 试图从插件中获取Maven的版本
我正在编写一个Maven插件,我需要从插件代码中了解实际运行的Maven版本。在shell中运行mvn-version后,预期结果将是版本号(例如3.3.9),如下所示:Java 试图从插件中获取Maven的版本,java,maven,maven-plugin,Java,Maven,Maven Plugin,我正在编写一个Maven插件,我需要从插件代码中了解实际运行的Maven版本。在shell中运行mvn-version后,预期结果将是版本号(例如3.3.9),如下所示: $ mvn -version Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-10T18:41:47+02:00) Maven home: /usr/local/opt/maven Java version: 1.8.0_111, ve
$ mvn -version
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-10T18:41:47+02:00)
Maven home: /usr/local/opt/maven
Java version: 1.8.0_111, vendor: Oracle Corporation
Java home: /Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "mac os x", version: "10.12.2", arch: "x86_64", family: "mac"
由于Maven文档有点缺乏,谷歌搜索“Maven版本”只会给我带来关于项目版本的结果(与Apache Maven本身的版本相反),因此很难找到答案。您可以使用用户属性
Maven.build.version
,如下所示:
public class Plugin extends AbstractMojo {
@Parameter(defaultValue = "${maven.build.version}")
private String mavenVersion;
...
}
在您的案例中,属性将包含以下值:
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-10T18:41:47+02:00)
这并不完全是您所期望的,但我希望这将对您有所帮助。从Maven 3.0.2开始,您可以使用该组件,它提供有关当前Maven运行时环境的信息
@Component
private RuntimeInformation runtimeInformation;
public void execute() throws MojoExecutionException, MojoFailureException {
String mavenVersion = runtimeInformation.getMavenVersion();
getLog().info(mavenVersion); // prints 3.3.9 when running the build with that version
}
该方法完全返回当前Maven版本,无需解析任何内容:
检索当前Maven版本,例如“3.0.2”
Mojo需要依赖于maven core
,才能定位该类:
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-core</artifactId>
<version>3.0.2</version> <!-- or some other version, like 3.3.9 -->
</dependency>
org.apache.maven
马文堆芯
3.0.2
正是我一直在寻找的!谢谢这也是一个很好的答案,尽管@Tunaki的答案非常准确。谢谢