Run a single Maven plugin execution?

DatabaseMavenTestingMaven 3Maven Plugin

Database Problem Overview


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?

Database Solutions


Solution 1 - Database

As noted in https://stackoverflow.com/questions/3166538/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.

Solution 2 - Database

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

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionHDaveView Question on Stackoverflow
Solution 1 - DatabaseJoeView Answer on Stackoverflow
Solution 2 - DatabasePascal ThiventView Answer on Stackoverflow