Use maven-exec-plugin to run command line

I want to use maven-exec-plugin to run command line (cmd) for converting a Markdown file to a PDF file using Pandoc.

To do that manually, I've executed these commands:

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

I wasn't able to run that in one command, pandoc giving weird error! But this is another problem...

I've added this to my pom file using other sample found on the web but without success.

<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>

I'm not a maven guru and help is appreciate!

Answers


The defined phase, <phase>generate-pdf</phase>, is not a maven phase, hence Maven didn't bind the execution to its workflow.

You should bind it to a standard Maven phase, depending on your need. Try <phase>package</phase> for instance, it will be executed nearly at the end of your build.

The id element of a plugin execution is free text, you can type the id you want, it will appear as part of the build output in curved brackets after the plugin and goal name,

i.e. exec-maven-plugin:1.1:exec (pandoc)

The phase element instead must match a well known maven phase in order to attach the plugin/goal execution to it. If the phase is not well known, then Maven will simply ignore that plugin/goal execution (which is also an adopted approach, usually using the de-facto standard none as phase, to disable an inherited plugin execution, but that's a bit advanced for the scope of this question I would say).

For more details on maven phases, look at the official documentation, here. For a full list of maven phases, here.


Need Your Help

Data packages? (cities, sports teams etc)

list web collections

I am working on a project that could use a list of every city, region, country in the world. Countless websites use the same data so I think there must be some data packages containing such lists (of

Node JS: Getting started with express

javascript node.js express

I am new to NodeJS and Express framework.