Разработка плагинов для Maven: есть ли способ автоматически запускать плагин, когда он только объявлен в pom.xml? - PullRequest
4 голосов
/ 07 сентября 2011

Я разрабатываю новый моджо. У него только одна цель, поэтому кажется логичным не заставлять пользователей добавлять раздел executions (если он не хочет изменять значение по умолчанию phase).

Это должно быть возможно, потому что, когда я добавляю очень простое описание плагина surefire, maven понимает, что его единственная цель test должна быть запущена, т.е.

 <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.4.3</version>
 </plugin>

и этого достаточно для запуска плагина.

Как мне добиться такой же небольшой конфигурации для моего плагина?

Вот что у меня сейчас (и оно не работает без executions раздела):

/**
 *
 * @goal test
 * @phase test
 */
public class MyMojoPlugin extends AbstractMojo {

   ... (implementation details)    
}

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

    <modelVersion>4.0.0</modelVersion>
    <groupId>org.somegroup</groupId>
    <artifactId>mymojo-maven-plugin</artifactId>
    <packaging>maven-plugin</packaging>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <dependency>
            <groupId>org.apache.maven</groupId>
            <artifactId>maven-plugin-api</artifactId>
            <version>2.0</version>
        </dependency>

        .... (other dependencies)

    </dependencies>

    <build>
        <plugins>
            ... (some plugins)
        </plugins>
    </build>

</project>

1 Ответ

2 голосов
/ 07 сентября 2011

Привязки жизненного цикла «по умолчанию» определены в Maven.Это описано в документе Build Lifecycle , в котором также указано, что для плагинов требуется раздел «Выполнения».

Я полагаю, что вы можете редактировать components.xml и перекомпилируйте Maven для вашего конкретного сайта.

На мой взгляд, лучшей альтернативой, по крайней мере для внутренней разработки, является использование общего POM POM, которое содержит конфигурацию, специфичную для сайта.

Редактировать: я искал ссылку на родительские POM и увидел это .Я не уверен, что это функция только для Maven3, но, вероятно, стоит изучить.

...