exec-maven-plugin exec:java失败:无法将配置值分配给java.lang.String类型的数组
Posted
技术标签:
【中文标题】exec-maven-plugin exec:java失败:无法将配置值分配给java.lang.String类型的数组【英文标题】:exec-maven-plugin exec:java failing: Cannot assign configuration values to array of type java.lang.String 【发布时间】:2012-04-28 16:34:38 【问题描述】:执行mvn exec:java
时无法正确解析配置参数,抛出如下错误:
[ERROR] 未能执行目标 org.codehaus.mojo:exec-maven-plugin:1.2.1:java (default-cli) on 项目自动测试程序:无法解析 mojo 的配置 org.codehaus.mojo:exec-maven-plugin:1.2.1:java: 无法分配 java.lang.String 类型数组的配置值:[-classpath, 类路径 ,--glue,com.company.test.cucumber,--format,漂亮, --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>
【问题讨论】:
【参考方案1】:我建议从您的配置中删除空条目并重试。
<argument>-classpath</argument>
<classpath/>
因为在 java 目标中,不允许基于 documentation 的类路径。
顺便说一句:切勿在 maven pom 中使用“\”。请改用正斜杠。
【讨论】:
我删除了空条目并将“\”更改为“/”。它从上一个错误继续,但现在抱怨它找不到 mainClass。[ERROR] Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.2.1:java (default-cli) on project autotest-programmes: An exception occured while executing the Java class. cucumber.cli.Main -> [Help 1]
您指的是哪些空条目? 根据exec:java Docs here,你必须:
删除<arguments>
部分
并使用<additionalClasspathElements>
声明来定义类路径。
【讨论】:
【参考方案3】:如果你想使用<classpath/>
,你必须使用exec:exec
而不是exec:java
。您还必须添加可执行文件,在您的情况下为 java
:
<executable>java</executable>
如果我理解正确,exec:java
会自动添加您无法覆盖的类路径。参数添加在主类之后。 exec:exec
更通用,它执行任何带有任何参数的可执行文件,其中之一可以是 <classpath/>
。
【讨论】:
以上是关于exec-maven-plugin exec:java失败:无法将配置值分配给java.lang.String类型的数组的主要内容,如果未能解决你的问题,请参考以下文章
exec-maven-plugin 生成的进程会阻塞 maven 进程
Maven 不会运行我的项目:无法执行目标 org.codehaus.mojo:exec-maven-plugin:1.2.1:exec
exec-maven-plugin 说不能运行指定的程序,即使它在 PATH 上
无法在项目 mavenproject2 上执行目标 org.codehaus.mojo:exec-maven-plugin:1.3.2:exec (默认):