我正在尝试将我的应用配置为仅使用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插件可以完成我想要的东西,我的问题可以很好理解。我非常感谢你能给我的任何帮助。
答案 0 :(得分:2)
我发现有一个可选的配置参数<commandlineArgs>
,它完全符合我的需要。
所以对我来说正确的配置是:
...
<configuration>
<executable>
/bin/spark-submit
</executable>
<commandlineArgs>
--class "package.Class" --master "local[4]" ${project.build.directory}/${project.build.finalName}.${packaging}
</commandlineArgs>
</configuration>
...
答案 1 :(得分:0)
这也有效:
<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>