如何在没有项目的Mojo插件的pom.xml中设置Mojo参数?



我写了一个Mojo Plugin。它有一个参数:

*@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;*
在Mojo Plugin的Pom.xml中,我定义了一个属性:
<properties><modus>1.1.1</modus></properties>

如果我在每mvn项目命令下直接调用Mojo目标,它会工作得很好

但是如果我调用mojo插件直接从maven的repo或。在没有mojo插件的目录下,参数模式没有设置。

我理解mvn找不到mojo插件项目的pom.xml,因此无法将值设置为parameter。

是否有办法将mojo maven插件的pom属性设置为生成的plugin.xml ?

我想调用(使用)mojo maven插件直接从maven repo与某些参数,其中他们的值设置或注入从插件的pom.xml

问候

我不完全理解为什么要将这些值写入pom.xml中的属性。在Java常量中编写要容易得多。但也许这个决定有某些方面的原因。

一些基础知识:

  1. 您可以使用MavenXpp3Reader读取和解析pom.xml(该类是maven-model模块的一部分)
  2. Maven将pom.xml写入/META-INF/maven/<groupId>/<artifactId>/pom.xml处的jar
  3. 插件本身在类路径上执行maven目标
  4. 您可以使用getClass().getResourceAsStream(...) 访问类路径资源
  5. 您可以使用getProperties
  6. 方法获取属性

将所有这些部分组合起来,它看起来像这样:

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);
}

相关内容

  • 没有找到相关文章

最新更新