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

Use maven-exec-plugin to run command line

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

为了手动执行此操作,我执行了以下命令:

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>

我不是专家,非常感谢您的帮助!

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

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

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

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

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

有关 maven 阶段的更多详细信息,请查看官方文档,here。 有关 Maven 阶段的完整列表,here.