将自定义Maven插件绑定到默认阶段

时间:2015-08-12 14:52:10

标签: maven maven-plugin

我有一个自定义Maven插件,我试图默认绑定到package阶段。我已尝试使用@Mojo注释和@Execute注释的每种组合,但它似乎不会自动绑定。

我设法使我的插件工作的唯一方法是通过这样定义:

@Mojo(name = "put")
public class SSHMojo extends AbstractMojo {

然后在我的项目中使用插件,定义一个执行。我希望每次我想使用插件时都不必添加<executions>

<plugin>
  <groupId>com.patrickgrimard</groupId>
  <artifactId>ssh-maven-plugin</artifactId>
  <version>1.0.2</version>
  <executions>
    <execution>
      <phase>package</phase>
      <goals>
        <goal>put</goal>
      </goals>
    </execution>
  </executions>
  <configuration>
    <serverId>devopsmtl</serverId>
    <host>example.com</host>
    <remoteDirectory>/srv/www</remoteDirectory>
  </configuration>
</plugin>

我的完整插件pom可以在https://github.com/pgrimard/ssh-maven-plugin/blob/master/pom.xml

找到

2 个答案:

答案 0 :(得分:0)

您只需使用以下内容:

@Mojo( name = "put", defaultPhase = LifecyclePhase.PACKAGE )

除此之外,我建议使用更新版本的maven-plugin-api(至少3.0)......

答案 1 :(得分:0)

  1. 使用注释属性defaultPhase(就像khmarbaise已经提到的那样):
@Mojo(name = "put", defaultPhase = LifecyclePhase.PACKAGE)
public class SSHMojo extends AbstractMojo { ... }


  1. 在使用中的Maven项目的pom.xml中,您可以在此之后省略对该阶段的引用:
<plugin>
  <groupId>com.patrickgrimard</groupId>
  <artifactId>ssh-maven-plugin</artifactId>
  <version>1.0.2</version>
  <executions>
    <execution>
      <!-- <phase>package</phase> --><!-- needed no longer -->
      <goals>
        <goal>put</goal>
      </goals>
    </execution>
  </executions>
  ...