【问题标题】:How can I pass a command line argument to the execution of a Maven program?如何将命令行参数传递给 Maven 程序的执行?
【发布时间】:2020-03-02 21:18:55
【问题描述】:

我在 Eclipse 中工作。

我的 Maven 程序有一个带有 exec 插件的 pom.xml 文件:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>exec-maven-plugin</artifactId>
    <version>${maven.exec.plugin.version}</version>
    <configuration>
        <arguments>
            <argument>src/test/resources/file.txt</argument>
        </arguments>
        <executable>mvn</executable>
        <mainClass>${main.class}</mainClass>
    </configuration>
    <executions>
        <execution>
            <goals>
                <goal>exec</goal>
            </goals>
        </execution>
    </executions>
</plugin>

我试图传递一个参数,但我仍然收到错误:

未知的生命周期阶段“.\src\test\resources\file.txt”。您必须以 : 或 :[:]: 格式指定有效的生命周期阶段或目标。可用的生命周期阶段有:验证、初始化、生成源、流程源、生成资源、流程资源、编译、流程类、生成测试源、流程测试源、生成测试资源、流程-test-resources、test-compile、process-test-classes、test、prepare-package、package、pre-integration-test、integration-test、post-integration-test、verify、install、deploy、pre-clean、clean ,清理后,站点前,站点,站点后,站点部署。 -> [帮助 1]

我还尝试通过运行方式 -> 运行配置通过 Eclipse 中的命令行参数传递文件。我收到了同样的错误信息。

如何将输入文件参数传递给应用程序?

【问题讨论】:

  • Maven Run Project的可能重复
  • @Joe 我已经查阅了那个帖子。我仍然收到错误消息。
  • 你想从 maven 内部运行 mvn 吗?看起来您尝试运行的有效命令是 mvn .\src\test\resources\file.txt,这不是有效的 mvn 命令行。你到底想跑什么?
  • 我正在尝试执行该程序。我怎么做?在 Eclipse 运行选项中,我的目标是 exec:exec
  • @Joe 您的评论让我意识到 exec:exec 和 exec:java 之间的区别。就我而言,我确实想要 exec:java。我将运行配置中的目标更改为 exec:java,它起作用了。我能够从我的 pom.xml 中删除 executableexecutions 标记。它现在正在工作。如果您为此效果创建答案,我会将其标记为正确。

标签: java maven exec-maven-plugin


【解决方案1】:

我刚刚在尝试从 OpenJFX.io 运行 Getting Started 教程时遇到了同样的错误。我遇到麻烦的具体地方是在配置和运行模块化 MAVEN 项目的部分,第 5 步“运行项目”。说明如下:

点击运行 -> 运行方式 -> Maven 构建 -> 新的启动配置 创建一个新的配置。将其命名为 hellofx,并添加所需的 目标:

clean javafx:run

我省略了这一步,因为我找不到输入目标的地方。运行然后产生相同的错误。

我忽略了运行配置有一个标有“目标”的字段。它位于屏幕中间的“主要”选项卡上。一旦我在此字段中输入了所需的文本,“hellofx”教程就会顺利运行。

如果“目标”字段未显示在您的项目运行配置中,我猜如果您通过选择“Maven 构建”选项创建新的运行配置,它将出现。

AFAIK,我的 Spring Tool Suite 4 基于 Eclipse,Maven 方面将是相似的,允许随着时间的推移进行版本演变。

【讨论】:

    【解决方案2】:

    将类似于以下内容的配置添加到您的 POM:

    <project>
      ...
      <build>
        <plugins>
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <version>1.6.0</version>
            <executions>
              <execution>
                ...
                <goals>
                  <goal>exec</goal>
                </goals>
              </execution>
            </executions>
            <configuration>
              <executable>maven</executable>
              <!-- optional -->
              <workingDirectory>/tmp</workingDirectory>
              <arguments>
                <argument>-X</argument>
                <argument>myproject:dist</argument>
                ...
              </arguments>
            </configuration>
          </plugin>
        </plugins>
      </build>
       ...
    </project>
    

    Source

    【讨论】:

    • 你能解释一下这会有什么帮助吗?它是从我已经看到的另一个线程中复制和粘贴的。
    猜你喜欢
    • 2013-07-12
    • 2011-05-20
    • 2015-10-30
    相关资源
    最近更新 更多