Maciej Biłas
Maciej Biłas

Reputation: 1976

Maven maven-exec-plugin multiple execution configurations

Is it possible to invoke a maven-exec-plugin (or any other plugin's) execution by its id from the command line?

Let's say my pom.xml file looks like this:

<project>
[...]
    <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>exec-maven-plugin</artifactId>
    <executions>
        <execution>
            <id>foo</id>
            <goals>
                <goal>exec</goal>
            </goals>
            <phase></phase>
            <configuration>
                <executable>echo</executable>
                <arguments>
                    <argument>foo</argument>
                </arguments>
            </configuration>
        </execution>
        <execution>
            <id>bar</id>
            <goals>
                <goal>exec</goal>
            </goals>
            <phase></phase>
            <configuration>
                <executable>echo</executable>
                <arguments>
                    <argument>bar</argument>
                </arguments>
                </configuration>
            </execution>
        </executions>
    </plugin>
[...]
</project>

Now is it possible to call

mvn exec:exec

with some added magic to run execution "foo"?

For the curious there is an alternative solution using profiles available here: http://www.mail-archive.com/[email protected]/msg00151.html

Upvotes: 34

Views: 23447

Answers (4)

slanglois
slanglois

Reputation: 424

It is now possible, starting from Maven 3.3.1: see improvement MNG-5768 and Maven 3.3.1 release notes

You can call a specific execution configuration with this syntax:

mvn exec:exec@foo

Upvotes: 30

migueloop
migueloop

Reputation: 541

I think if you write execute the goal:

org.codehaus.mojo:exec-maven-plugin:¿Version?:exec

it worked for me in eclipse maven plugin.

Upvotes: 0

Ryan Stewart
Ryan Stewart

Reputation: 128939

Not mentioned here is that, as of Maven 2.2.0, if you give an execution of any plugin the id "default-cli", then when you run that plugin from the command line, that configuration is used. You're limited to only one default execution of each plugin, but it's a start.

Upvotes: 11

Pascal Thivent
Pascal Thivent

Reputation: 570615

No, it's not possible. Executions are for binding to the lifecycle (i.e. they are not designed to be invoked on the command line). So you'll have to use the profile trick described in the link that you provided.

Upvotes: 16

Related Questions