java - 将参数传递给 maven-exec-plugin 的内部命令失败

标签 java maven rmic

我正在尝试使用 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>不包含未转义的空格字符。每个参数必须作为单独的 <argument> 给出.

就您而言,-rmic "-d C:\java\classes"实际上由 2 个参数组成:第一个是 -rmic第二个是"-d C:\java\classes" (其中包含转义空格),因此您不能将它们传递到单个 <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作为参数数组中的第四个元素。

关于java - 将参数传递给 maven-exec-plugin 的内部命令失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39446742/

相关文章:

java - 无法解决 jira-rest-java-client 依赖性

java - 警告 : No pom file was found, 假设默认设置!

java - 以编程方式运行 ant : "Cannot use SUN rmic"

java - 如何使 Nexus 存储库拥有多个代理存储库?

maven - 跳过 Maven 构建测试的结果是什么?

java - 无法使用 rmic 编译 .class 文件,类不是文件

java - 在初始化 bean 之前测试端口是否正在使用

java - 如何在链接表上设置hibernate生成的外键约束名称?

java - Hibernate 在 session.update(parent) 之后删除子对象