2016-09-07 6 views
0

Я пишу плагин Mojo. Он имеет Pamameter как:Как я могу установить Mojo Paramater из pom.xml плагина Mojo без проекта

*@Mojo(name = "showModus", requiresProject = false, defaultPhase = LifecyclePhase.PROCESS_RESOURCES)<br> 
public class ShowModus extends AbstractMojo { <br> 
@Parameter (property = "modus", defaultValue = "${modus}")<br> 
private String modus;* 

в pom.xml из Mojo Plugin я определить свойство для этого:

<properties><modus>1.1.1</modus></properties> 

Он отлично работает, если я называю цель Mojo направлять по заказу проекта на MVN

Но если я называю плагин mojo прямой формой maven repo или. в директории без плагина mojo параметр modus не установлен.

Я понимаю, что mvn не может найти pom.xml проекта плагина mojo и поэтому не может установить значение в параметр.

Есть ли способ, которым я могу установить свойства pom плагина mojo maven в сгенерированный plugin.xml?

Я wourd любят называть (использование) колдовскую Maven плагин непосредственно из Maven репо с определенным параметром при этом их значение, установленное или впрыснуть из pom.xml плагина

Приветствие

ответ

0

Я не понимаю укомплектовать почему вы хотите записать эти значения в качестве свойств в pom.xml. Гораздо проще написать константу Java. Но, возможно, есть некоторые аспекты этого решения.

Некоторые основы:

  1. Вы можете читать и анализировать pom.xml с MavenXpp3Reader (этот класс является частью maven-model модуля)
  2. Maven пишет pom.xml в банку на /META-INF/maven/<groupId>/<artifactId>/pom.xml
  3. плагином сам находится на пути к классу при выполнении цели maven
  4. вы можете получить доступ к ресурсам пути к классам с помощью getClass().getResourceAsStream(...)
  5. вы можете получить свойство с помощью метода getProperties

Упаковки всех этих частей это выглядит примерно так:

final String pathToPluginPom = "/META-INF/maven/de.example/example-maven-plugin/pom.xml"; 
try (InputStream stream = getClass().getResourceAsStream(pathToPluginPom)) { 
    final MavenXpp3Reader reader = new MavenXpp3Reader(); 
    final Model model = reader.read(stream); 
    final Properties properties = model.getProperties(); 
    final String myPropertyValue = properties.getProperty("myproperty"); 
    getLog().info("Property: " + myPropertyValue); 
} catch (final IOException | XmlPullParserException ex) { 
    getLog().error("ERROR!", ex); 
}