我有一个自定义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
找到答案 0 :(得分:0)
您只需使用以下内容:
@Mojo( name = "put", defaultPhase = LifecyclePhase.PACKAGE )
除此之外,我建议使用更新版本的maven-plugin-api(至少3.0)......
答案 1 :(得分:0)
defaultPhase
(就像khmarbaise已经提到的那样):@Mojo(name = "put", defaultPhase = LifecyclePhase.PACKAGE)
public class SSHMojo extends AbstractMojo { ... }
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>
...