我写了一个Mojo插件。它有一个Pamameter,如:
*@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插件的Pom.xml中我为此定义了一个属性:
<properties><modus>1.1.1</modus></properties>
如果我按照mvn
的项目顺序直接调用Mojo目标,它可以正常工作但是,如果我将mojo插件直接调用maven repo或。在没有mojo插件的目录中,未设置参数模式。
据我所知,mvn无法找到mojo插件项目的pom.xml,因此无法将值设置为参数。
有什么办法可以将mojo maven插件的pom属性设置为生成的plugin.xml吗?
我喜欢直接从maven repo调用(使用)mojo maven插件使用某个参数,从而将其值设置或从插件的pom.xml中注入
问候语
答案 0 :(得分:0)
我没有完全理解为什么要将这些值作为属性写在pom.xml
中。
在Java常量中编写它更容易。但也许这个决定有一些方面。
一些基础知识:
MavenXpp3Reader
阅读并解析pom.xml
(此类是maven-model
模块的一部分)pom.xml
写入/META-INF/maven/<groupId>/<artifactId>/pom.xml
getClass().getResourceAsStream(...)
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);
}