【发布时间】:2016-11-09 15:14:02
【问题描述】:
假设我有以下魔力:
@Mojo(name = "some-goal")
public class MyMojo {
@Parameter(required = true)
protected ComplexObject param;
/*...*/
}
我在 pom 中也有插件的描述符:
<plugin>
<!-- here artifact description -->
<executions>
<execution>
<phase>...</phase>
<goals><goal>some-goal</goal></goals>
<configuration>
<param>...</param>
</configuration>
</execution>
</executions>
</plugin>
为了测试这个插件,我使用 maven-plugin-testing-harness
而我的测试代码是:
@Test
public void test() throws Exception {
File pom = getFile("mix/pom.xml");
MyMojo plugin = (MyMojo) rule.lookupMojo("some-goal", pom);
/*....*/
}
规则在哪里:
@Rule
public MojoRule rule = new MojoRule() {
@Override
protected void before() throws Throwable {
}
@Override
protected void after() {
}
};
但是当我运行测试时它失败并出现异常:
org.apache.maven.plugin.testing.ConfigurationException: 找不到 artifactId 为 {plugin-name} 的插件的配置元素。
at org.apache.maven.plugin.testing.AbstractMojoTestCase.extractPluginConfiguration(AbstractMojoTestCase.java:619)
at org.apache.maven.plugin.testing.AbstractMojoTestCase.extractPluginConfiguration(AbstractMojoTestCase.java:582)
at org.apache.maven.plugin.testing.AbstractMojoTestCase.lookupMojo(AbstractMojoTestCase.java:353)
at org.apache.maven.plugin.testing.MojoRule.lookupMojo(MojoRule.java:164)
当我调试 maven-plugin-testing-harness 的源代码时,我注意到它仅从根插件元素读取配置。
如何强制它从执行元素中读取配置?
【问题讨论】:
-
问题解决了吗?
-
很遗憾没有。我做了解决方法。
-
是的,我很同情。我查看了源代码。它非常简单,硬编码,不可配置。但是,如果您决定分叉源代码,则很容易根据自己的目的进行修改。
-
在插件配置的顶层添加一个空配置块。
标签: java maven junit pom.xml mojo