2017-01-19 4 views
1

Я пишу плагин Maven, и мне нужно знать версию Maven, которая фактически запущена, из кода плагина. Ожидаемый результат был бы номер версии (например 3.3.9) после запуска MVN -version в оболочке, например, так:Попытка получить версию Maven изнутри плагина

$ 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), трудно найти ответ.

ответ

1

Начиная с Maven 3.0.2 вы можете использовать компонент RuntimeInformation, который предоставляет информацию о текущей среде выполнения 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 
} 

Метод getMavenVersion() возвращает именно текущую версию Maven, без необходимости разобрать что-нибудь:

Извлекает текущую версию Maven, например, «3.0.2».

колдовской нужно будет иметь зависимость от 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> 
+0

Только то, что я искал! Благодаря! – deebugger

1

Вы можете использовать свойство 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) 

Это не совсем то, что вы ожидали, но я надеюсь, это поможет вам.

+0

также хороший ответ, хотя @Tunaki «s ответа на месте. Благодаря! – deebugger