Запустить одно выполнение плагина Maven?

98

Я думал, что являюсь опытным пользователем Maven, но у меня не получается, как это сделать!

Я смог использовать плагин Maven sql для удаления, создания и установки схемы в базе данных посредством выполнения плагинов, которые я определил и привязал к pre-integration-testфазе.

Однако теперь я хотел бы использовать тот же самый плагин sql для вставки некоторых образцов данных, когда я захочу из командной строки, то есть не привязанных к какой-либо цели жизненного цикла. Существует несколько различных наборов данных для примера, поэтому я хотел бы определить несколько различных вариантов выполнения.

Но есть ли способ запустить одно из этих выполнений из командной строки, возможно, используя идентификатор выполнения?

HDave
источник

Ответы:

137

Как указано в разделе Как выполнить выполнение плагина maven непосредственно из командной строки? , эта функция была реализована как MNG-5768 и доступна в Maven 3.3.1.

Изменения будут:

расширить синтаксис прямого вызова плагина, чтобы разрешить необязательный параметр @ execution-id, например org.apache.maven.plugins: maven-remote-resources-plugin: 1.0: process @ executionId.

Итак, пока вы даете своему исполнению идентификатор:

mvn sql:execute@specific-execution-id

использует выполнение, настроенное в вашем pom.

Джо
источник
Это здорово :)
GabrielBB
49

Но есть ли способ запустить одно из этих выполнений из командной строки, возможно, используя идентификатор выполнения?

Нет, это невозможно . Что можно , хотя это определение «в» конфигурации , которые будут использоваться , когда плагин вызывается из командной строки с помощью «специального» default-cliисполнения идентификатора:

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

И просто позвоните mvn sql:execute.

Подробности см. Ниже (из примечаний к выпуску Maven 2.2.0 ):

  • MNG-3401 - Начиная с Maven 2.2.0, цели, вызываемые непосредственно из командной строки, могут быть настроены в POM отдельно от вызовов других плагинов, используя специальный executionIdвызов default-cli. Если раньше все конфигурации для целей командной строки должны были входить в конфигурацию уровня плагина, Maven 2.2.0 позволяет разделять специфичные для командной строки конфигурации на отдельные <execution>. Для получения дополнительной информации см. Руководство по идентификаторам выполнения по умолчанию .
Паскаль Тивент
источник
1
Бьюсь об заклад, вы могли бы достичь того, чего хотите, используя два разных профиля
Дэниел Каплан,
4
Этот ответ теперь устарел с текущими версиями Maven. См. Ответ @Joe
Noremac 02