Как я могу изменить название цели, например, foo:bar
? (Почему ни display
, ни time
нигде не фигурируют во фрагменте XML? Как вы можете, глядя на фрагмент, определить, какие цели он определяет?)
Если быть точным, в foo:bar
, foo
- это «префикс цели плагина», а bar
- «цель». И хотя последнее основано на соглашениях об именах (или может быть сконфигурировано 1 ), первое происходит из аннотации BarMojo
, класса, который реализует логику плагина. Примерно так:
/**
* Do the wonderful bar.
* @goal bar
* @requiresProject false
*/
public class BarMojo extends AbstractMojo
{
...
}
Для изменения цели требуется изменить аннотацию mojo плагина и перестроить его.
Что касается документации, на которую вы ссылаетесь, существует явное несоответствие между целью time
и фрагментом XML, которая связывает цель timestamp
с фазой process-test-resources
. Это должно быть опечатка.
Как я могу вручную запустить эту цель? (Для аналогичных конструкций эквивалент mvn display: время иногда работает, но это не работает последовательно.)
Вы можете назвать это так:
mvn com.mycompany.example:maven-touch-plugin:1.0:timestamp
Вы можете сделать эту команду короче, добавив com.mycompany.example
к группам плагинов в ваших settings.xml
(org.apache.maven.plugins
и org.codehaus.mojo
объявлены по умолчанию, если вам интересно, как она работает для этих плагинов)
<settings>
...
<pluginGroups>
<pluginGroup>com.mycompany.example</pluginGroup>
</pluginGroups>
</settings>
Тогда, поскольку имя плагина соответствует шаблонам ${prefix}-maven-plugin
или maven-${prefix}-plugin
, вы можете выполнить:
mvn touch:timestamp
Рекомендуется следовать соглашению, но, как я уже сказал, префикс также может быть настроен .
Как узнать, существует ли эта цель?
Проверьте документацию плагина (полученную из источников плагина) или источников плагина.
1 Обратите внимание, что в нижней части упомянутой страницы Книги Maven также есть опечатка. Способ выполнения плагина с пользовательским префиксом должен быть mvn blah:echo
(см. MVNREF-145 ).