2015-04-16 66 views
2

我試圖將我的應用程序配置爲僅與mvn package exec:exec一起使用。Maven 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的調試信息):

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

我認爲問題SI的參數都意味着是傳遞給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插件完成任務,並且我的問題可以很好理解。我將不勝感激您給我的任何幫助。

回答

1

我發現有一個可選的配置參數<commandlineArgs>,它正是我所需要的。

所以對我來說正確的配置是:

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