gpt4 book ai didi

java - Maven:从执行元素获取目标配置

转载 作者:行者123 更新时间:2023-11-30 06:09:18 28 4
gpt4 key购买 nike

让我们想象一下我有以下魔力:

@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>

为了测试这个插件,我使用ma​​ven-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)

当我调试 ma​​ven-plugin-testing-harness 的源代码时,我注意到它只从根插件元素读取配置。

如何强制它从执行元素读取配置?

最佳答案

添加空 <configuration></configuration>阻止测试插件配置帮助了我。

尝试使用这些部门:

<dependency>
<groupId>org.apache.maven.plugin-testing</groupId>
<artifactId>maven-plugin-testing-harness</artifactId>
<version>3.3.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-component-annotations</artifactId>
<version>1.7.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-compat</artifactId>
<version>3.3.9</version>
</dependency>

Maven 插件测试没有得到很好的描述,看起来有问题......

关于java - Maven:从执行元素获取目标配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38243144/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com