Run a single Maven plugin execution?
Asked Answered
F

2

131

I thought I was an experienced Maven user, but I am having a mental block on how to do this!

I've been able to use the Maven sql plugin to drop, create, and install a schema in a database via plugin executions I've defined and bound to the pre-integration-test phase.

However, now I'd like to use that same sql plugin to insert some sample data whenever I want from the command line -- that is, not bound to any lifecycle goal. There are a few different sets of sample data, so I'd like to define a few different executions.

But is there a way to run one of these executions from the command line by using the execution ID perhaps?

Fizzle answered 23/9, 2010 at 14:21 Comment(1)
possible duplicate of How to execute maven plugin execution directly from command line?Kinsler
K
184

As noted in How to execute maven plugin execution directly from command line?, this functionality has been implemented as MNG-5768, and is available in Maven 3.3.1.

The change will:

extend direct plugin invocation syntax to allow optional @execution-id parameter, e.g., org.apache.maven.plugins:maven-remote-resources-plugin:1.0:process@executionId.

So, as long as you give your execution an id:

mvn sql:execute@specific-execution-id

uses the execution configured in your pom.

Kinsler answered 28/2, 2015 at 5:24 Comment(0)
C
49

But is there a way to run one of these executions from the command line by using the execution ID perhaps?

No, not possible. What is possible though is to define "a" configuration to be used when the plugin is invoked from the command line using the "special" default-cli execution id:

<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>sql-maven-plugin</artifactId>
  <version>1.4</version>
  ...
  <executions>
    <execution>
      <id>default-cli</id>
      <configuration>
        ...
      </configuration>
    </execution>
    ...
  </executions>
</plugin>

And simply call mvn sql:execute.

See below for the details (from the Maven 2.2.0 Release Notes):

  • MNG-3401 - Starting in Maven 2.2.0, goals invoked directly from the command line can be configured in the POM separately from other plugin invocations using a special executionId called default-cli. Where previously, all configurations for command-line goals had to go in the plugin-level configuration, Maven 2.2.0 allows command-line-specific configurations to be separated into their own <execution>. For more information, see the Guide to Default Execution IDs.
Consonantal answered 23/9, 2010 at 16:42 Comment(2)
I bet you could achieve what you want by using two different profilesNostology
This answer is now outdated with current versions of Maven. See the answer provided by @KinslerWebfooted

© 2022 - 2024 — McMap. All rights reserved.