2015-12-02 174 views
2

我想使用maven-exec-plugin運行命令行(cmd),使用Pandoc將Markdown文件轉換爲PDF文件。使用maven-exec-plugin運行命令行

做手工,我執行以下命令:

pandoc ReadMe.md -o ReadMe.html 
pandoc ReadMe.html --latex-engine=xelatex -o ReadMe.pdf 

我是不是能夠運行在一個命令,pandoc給人奇怪的錯誤!但這是另一個問題...

我已經使用網上找到的其他示例將它添加到我的pom文件中,但沒有成功。

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>exec-maven-plugin</artifactId> 
      <version>1.2.1</version> 
      <executions> 
       <execution> 
        <id>pandoc</id> 
        <phase>generate-pdf</phase> 
        <configuration> 
         <executable>cmd</executable> 
         <workingDirectory></workingDirectory> 
         <arguments> 
          <argument>/C</argument> 
          <argument>pandoc</argument> 
          <argument>README.md</argument> 
          <argument>-o</argument> 
          <argument>README.html</argument> 
         </arguments> 
        </configuration> 
        <goals> 
         <goal>exec</goal> 
        </goals> 
       </execution>        
      </executions> 
     </plugin> 
    </plugins> 
</build> 

我不是maven guru,並且幫助表示感謝!

回答

3

定義階段<phase>generate-pdf</phase>不是maven階段,因此Maven沒有將執行綁定到其工作流程。

您應該將其綁定到標準Maven階段,具體取決於您的需要。例如,嘗試<phase>package</phase>,它會在構建結束時執行。

插件執行的id元素是免費的文字,你可以輸入你想要的ID,它會出現在插件和目標名稱後圓括號構建輸出的一部分,

exec-maven-plugin:1.1:exec (pandoc)

phase元素必須匹配衆所周知的Maven階段才能將插件/目標執行附加到它。如果階段不是衆所周知的,那麼Maven會簡單地忽略該插件/目標執行(這也是一種採用的方法,通常使用事實上的標準none作爲階段來禁用繼承的插件執行,但這有點高級這個問題的範圍我會說)。

有關maven階段的更多詳細信息,請參閱官方文檔here。 有關maven階段的完整列表,here

+0

你是對的!我已經設置階段來生成資源。謝謝! –