将参数传递给 maven-exec-plugin 的内部命令失败
Passing arguments to inner command of maven-exec-plugin failed
我正在尝试使用 maven-exec-plugin 为我使用 EJB 2.1 制作的旧项目启动 ejbdeploy 命令
问题是命令的参数之一是另一个命令 (RMIC),它也有我需要使用的参数。
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<executions>
<execution>
<id>ejb-deploy</id>
<phase>package</phase>
<goals>
<goal>exec</goal>
</goals>
<configuration>
<executable>ejbdeploy</executable>
<arguments>
<argument>${project.build.directory}${project.build.finalName}.jar</argument>
<argument>${project.build.directory}\working</argument>
<argument>${project.build.directory}${project.build.finalName}-deployed.jar</argument>
<argument>-rmic "-d C:\java\classes"</argument>
<argument>-cp</argument>
<classpath/>
</arguments>
</configuration>
</execution>
</executions>
</plugin>
此代码段在我的 mvn clean install
期间生成错误:
[INFO] --- exec-maven-plugin:1.5.0:exec (ejb-deploy) @ SIMBOLight ---
Unrecognized option: -rmic -d.
Unrecognized option: C:\java\classes.
Error: Must specify the input JAR/EAR filename, the working directory, and output JAR/EAR filename.
0 Errors, 0 Warnings, 0 Informational Messages
好像我的参数格式有误。有什么想法吗?
当使用 exec-maven-plugin
传递参数时,您需要确保每个 <argument>
不包含未转义的 space 字符。每个参数必须作为单独的 <argument>
.
给出
在你的例子中,-rmic "-d C:\java\classes"
实际上由 2 个参数组成:第一个是 -rmic
,第二个是 "-d C:\java\classes"
(其中包含转义的 space ), 所以你不能将它们传递到单个 <argument>
.
因此,您可以有以下配置:
<arguments>
<argument>${project.build.directory}${project.build.finalName}.jar</argument>
<argument>${project.build.directory}\working</argument>
<argument>${project.build.directory}${project.build.finalName}-deployed.jar</argument>
<argument>-rmic</argument>
<argument>"-d C:\java\classes"</argument>
<argument>-cp</argument>
<classpath />
</arguments>
当配置了这些参数时,启动的可执行文件的 main
方法将 -rmic
作为参数数组中的第三个元素,而 -d C:\java\classes
作为参数数组中的第四个元素参数数组。
我正在尝试使用 maven-exec-plugin 为我使用 EJB 2.1 制作的旧项目启动 ejbdeploy 命令
问题是命令的参数之一是另一个命令 (RMIC),它也有我需要使用的参数。
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<executions>
<execution>
<id>ejb-deploy</id>
<phase>package</phase>
<goals>
<goal>exec</goal>
</goals>
<configuration>
<executable>ejbdeploy</executable>
<arguments>
<argument>${project.build.directory}${project.build.finalName}.jar</argument>
<argument>${project.build.directory}\working</argument>
<argument>${project.build.directory}${project.build.finalName}-deployed.jar</argument>
<argument>-rmic "-d C:\java\classes"</argument>
<argument>-cp</argument>
<classpath/>
</arguments>
</configuration>
</execution>
</executions>
</plugin>
此代码段在我的 mvn clean install
期间生成错误:
[INFO] --- exec-maven-plugin:1.5.0:exec (ejb-deploy) @ SIMBOLight ---
Unrecognized option: -rmic -d.
Unrecognized option: C:\java\classes.
Error: Must specify the input JAR/EAR filename, the working directory, and output JAR/EAR filename.
0 Errors, 0 Warnings, 0 Informational Messages
好像我的参数格式有误。有什么想法吗?
当使用 exec-maven-plugin
传递参数时,您需要确保每个 <argument>
不包含未转义的 space 字符。每个参数必须作为单独的 <argument>
.
在你的例子中,-rmic "-d C:\java\classes"
实际上由 2 个参数组成:第一个是 -rmic
,第二个是 "-d C:\java\classes"
(其中包含转义的 space ), 所以你不能将它们传递到单个 <argument>
.
因此,您可以有以下配置:
<arguments>
<argument>${project.build.directory}${project.build.finalName}.jar</argument>
<argument>${project.build.directory}\working</argument>
<argument>${project.build.directory}${project.build.finalName}-deployed.jar</argument>
<argument>-rmic</argument>
<argument>"-d C:\java\classes"</argument>
<argument>-cp</argument>
<classpath />
</arguments>
当配置了这些参数时,启动的可执行文件的 main
方法将 -rmic
作为参数数组中的第三个元素,而 -d C:\java\classes
作为参数数组中的第四个元素参数数组。