【问题标题】:Maven exec plugin passing arguments to external executableMaven exec插件将参数传递给外部可执行文件
【发布时间】:2015-06-22 16:28:01
【问题描述】:

我正在尝试将我的应用程序配置为仅使用 mvn package exec:exec

我想要的是构建.jar 并将其提交到外部二进制文件,我可以在mvn package 之后手动执行此操作,但我希望它是自动的。我认为maven exec插件是要走的路。

我目前的配置是:

<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>exec-maven-plugin</artifactId>
  <version>1.4.0</version>
  <executions>
    <execution>
      <goals>
        <goal>exec</goal>
      </goals>
    </execution>
  </executions>
  <configuration>
    <executable>
      /bin/spark-submit
    </executable>
    <arguments>
      <argument>
         --class "package.Class" --master "local[4]" ${project.build.directory}/${project.build.finalName}.${packaging}                 
      </argument>
    </arguments>
  </configuration>
</plugin>

它的作用是执行(来自 maven DEBUG 信息):

/bin/spark-submit, --class "package.Class" --master "local[4]" myApp.jar

我认为问题在于参数是要传递给 java 可执行文件的,所以它们用逗号分隔,这是我在执行 shell 命令时不想要的。

我尝试过的另一件事是拆分参数:

<arguments>
  <argument>--class "package.Class"</argument>
  <argument>--master "local[4]"</argument>
  <argument>${project.build.directory}/${project.build.finalName}.${packaging}</argument>
</arguments>

执行:

/bin/spark-submit, --class "package.Class", --master "local[4]", myApp.jar

(更多逗号,也不是我想要的)

我想让 maven 执行:

/bin/spark-submit --class "package.Class" --master "local[4]" myApp.jar

我希望可以使用 maven exec 插件完成我想要的事情,并且我的问题可以很好地理解。如果您能给我任何帮助,我将不胜感激。

【问题讨论】:

    标签: java maven apache-spark build maven-plugin


    【解决方案1】:

    我发现有一个可选的配置参数&lt;commandlineArgs&gt; 正是我需要的。

    所以对我来说正确的配置是:

    ...
    <configuration>
      <executable>
        /bin/spark-submit
      </executable>
      <commandlineArgs>
        --class "package.Class" --master "local[4]" ${project.build.directory}/${project.build.finalName}.${packaging}
      </commandlineArgs>
    </configuration>
    ...
    

    【讨论】:

      【解决方案2】:

      这也有效:

      <configuration>
      <executable>/Users/mike/Applns/apache/spark/spark-3.0.0-bin-hadoop3.2/bin/spark-submit</executable>
      <arguments>
          <argument>--master</argument>
          <argument>local</argument>
          <argument>${project.build.directory}/${project.artifactId}-${project.version}.jar</argument>
      </arguments>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-12-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多