我写了一个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常量中编写要容易得多。但也许这个决定有某些方面的原因。
一些基础知识:
- 您可以使用
MavenXpp3Reader
读取和解析pom.xml
(该类是maven-model
模块的一部分) Maven将 - 插件本身在类路径上执行maven目标 您可以使用
- 您可以使用
getProperties
方法获取属性
pom.xml
写入/META-INF/maven/<groupId>/<artifactId>/pom.xml
处的jar getClass().getResourceAsStream(...)
访问类路径资源将所有这些部分组合起来,它看起来像这样:
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);
}