14

执行mvn exec:java时无法正确解析配置参数,抛出以下错误:

[错误] 无法在项目 autotest-programmes 上执行目标 org.codehaus.mojo:exec-maven-plugin:1.2.1:java (default-cli):无法解析 mojo org.codehaus.mojo:exec-maven 的配置-plugin:1.2.1:java:无法将配置值分配给 java.lang.String 类型的数组:[-classpath,Classpath {},--glue,com.company.test.cucumber,--format,pretty,- -format, html:C:\workspace\autotest\target] -> [帮助 1]

这是使用的插件配置(使用 Apache Maven 3.0.3):

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>exec-maven-plugin</artifactId>
    <version>1.2.1</version>
    <executions>
        <execution>
            <goals>
                <goal>java</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <includeProjectDependencies>false</includeProjectDependencies>
        <includePluginDependencies>true</includePluginDependencies>
        <executableDependency>
            <groupId>info.cukes</groupId>
            <artifactId>cucumber-core</artifactId>
        </executableDependency>
        <mainClass>cucumber.cli.Main</mainClass>
        <commandlineArgs>-Dfile.encoding=UTF-8</commandlineArgs>
        <arguments>
            <argument>-classpath</argument>
            <classpath/>
            <argument>--glue</argument>
            <argument>com.company.test.cucumber</argument>
            <argument>--format</argument>
            <argument>pretty</argument>
            <argument>--format</argument>
            <argument>html:${project.basedir}\target</argument>
        </arguments>
    </configuration>
    <dependencies>
        <dependency>
            <groupId>info.cukes</groupId>
            <artifactId>cucumber-core</artifactId>
            <version>1.0.2</version>
        </dependency>
    </dependencies>
</plugin>
4

3 回答 3

12

我建议从您的配置中删除空条目并重试。

 <argument>-classpath</argument>
 <classpath/>

原因在 java 目标中,根据文档不允许类路径。

顺便说一句:永远不要在你的 maven pom 中使用“\”。请改用正斜杠。

于 2012-04-17T10:51:22.827 回答
2

根据此处的 exec:java Docs,您必须:

移除<arguments>零件

并使用<additionalClasspathElements>声明来定义类路径。

于 2015-03-31T12:37:14.747 回答
1

如果你想使用<classpath/>,你必须使用exec:exec而不是exec:java。您还必须添加可执行文件,java在您的情况下:

<executable>java</executable>

如果我理解正确,exec:java自动添加你不能覆盖它的类路径。参数添加在主类之后。exec:exec更通用,它执行任何带有任何参数的可执行文件,其中之一可以是<classpath/>.

于 2019-03-06T10:31:47.770 回答