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

Jon*_*til 5 maven-plugin pom.xml maven exec-maven-plugin pandoc

我想使用 maven-exec-plugin 运行命令行(cmd),以便使用 Pandoc 将 Markdown 文件转换为 PDF 文件。

要手动执行此操作,我已执行以下命令:

pandoc ReadMe.md -o ReadMe.html
pandoc ReadMe.html --latex-engine=xelatex -o ReadMe.pdf
Run Code Online (Sandbox Code Playgroud)

我无法在一个命令中运行它,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>
Run Code Online (Sandbox Code Playgroud)

我不是 Maven 大师,感谢帮助!

A_D*_*teo 6

定义的阶段<phase>generate-pdf</phase>不是 maven 阶段,因此 Maven 没有将执行绑定到它的工作流。

您应该根据需要将其绑定到标准的 Maven 阶段。尝试<phase>package</phase>例如,它会在几乎你构建结束时执行。

id插件执行的元素是自由文本,你可以输入你想要的 id,它将作为构建输出的一部分出现在插件和目标名称之后的弧形括号中,

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

phase相反,该元素必须匹配众所周知的 maven 阶段,以便将插件/目标执行附加到它。如果阶段不是众所周知的,那么 Maven 将简单地忽略该插件/目标执行(这也是一种采用的方法,通常使用事实上的标准none作为阶段,以禁用继承的插件执行,但这对于我会说这个问题的范围)。

有关 maven 阶段的更多详细信息,请查看官方文档,这里。有关 maven 阶段的完整列表,请点击此处