使用maven-exec-plugin运行命令行

问题描述:

我想使用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,并且帮助表示感谢!

定义阶段<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

你是对的!我已经设置阶段来生成资源。谢谢! –