Maven 3 JavaDoc插件与TestNG组冲突

Lui*_* R. 5 java testng javadoc maven

我有以下内容:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-javadoc-plugin</artifactId>
    <version>${maven-javadoc-plugin.version}</version>
    <executions>
        <execution>
            <id>javadoc-jar</id>
            <phase>package</phase>
            <goals>
                <goal>jar</goal>
            </goals>
        </execution>
    </executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)

在包装或安装过程中工作正常:

但是,当我尝试指定要运行测试的TestNG组时,mvn install或mvn包:

mvn install -Dgroups=somegroup
Run Code Online (Sandbox Code Playgroud)

测试完成后,它会因以下错误而失败:

[错误]无法在项目ibd.database.api上执行目标org.apache.maven.plugins:maven-javadoc-plugin:2.9.1:jar(javadoc-jar):无法解析mojo org.apache.maven的配置.plugins:maven-javadoc-plugin:2.9.1:参数#的jar:在类org.apache.maven.plugin.javadoc.options.Group中找不到默认的setter

感谢您对此提供的任何信息或指导.

小智 5

问题是surefire和javadoc插件都使用-Dgroups参数,在你的情况下,javadoc插件找不到"somegroup".

据我所知,没有干净的解决方案,但您可以通过在pom.xml中定义自定义属性来解决此问题:

<properties>
    <surefire.groups></surefire.groups>
</properties>
Run Code Online (Sandbox Code Playgroud)

然后在surefire配置中使用该属性:

<plugin>
    <artifactId>maven-surefire-plugin</artifactId>
    ...
    <configuration>
         <groups>${surefire.groups}</groups>
    </configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)

现在,您可以使用surefire.groups属性从命令行运行测试:

mvn install -Dsurefire.groups=somegroup
Run Code Online (Sandbox Code Playgroud)