【问题标题】:Invoking maven plugin as a part of build lifecycle调用 maven 插件作为构建生命周期的一部分
【发布时间】:2015-05-26 03:12:54
【问题描述】:

我是 Maven 新手。我正在尝试将一个插件集成到我的构建中,以便它作为阶段执行的一部分自动执行。

假设我想进入干净的生命周期阶段。

我正在使用的 mojo 被注释指定它应该被注入到干净的阶段:

/**
* 
 * @goal clean
 * @phase clean
 * @requiresProject
 */

public class CleanMojo extends AbstractSCAMojo {

这个 mojo 是按照 Using Plugin Tools Java5 Annotations 中的说明安装的。 我在 pom.xml 中添加了插件:

<build>
   <plugins>
        <plugin>
        <groupId>myclean.plugin</groupId>
        <artifactId>myclean-maven-plugin</artifactId>
        <version>1.0</version>
        <configuration>
            <logfile>C:/temp/clean.log</logfile>
        </configuration>
    </plugin>
    </plugins>
</build>

据我了解,在 Mojo java 代码中绑定生命周期可以消除在 build-plugins-plugin 中提供执行的需要。对吗?

我期待在调用上面配置的 mvn clean 之后,myclean.plugin:myclean-maven-plugin 将作为 clean 目标的一部分执行,但除此之外什么都没有发生常规的 Maven 清洁程序。

当 pom 更改为指定 executions myclean.plugin:myclean-maven-plugin 被调用,所以我确信 mojo 代码不包含阻塞错误 - 这只是一个问题配置。

我可能需要指定更多内容才能使插件自动执行(即不指定executions),但是什么?

【问题讨论】:

  • 您想实现什么?我怀疑您是否需要先编写一个插件,然后再检查是否已经有插件可以解决您的问题。
  • 我想获得理解
  • 现在是 2021 年,我希望我的插件在执行 mvn clean 时进行清理。但是,与您一样,我发现仅指定 CLEAN 阶段时它不起作用。你有什么运气吗?

标签: maven maven-plugin


【解决方案1】:

根据documentation,您应该在类定义之前添加以下注释:

@Mojo(name = "clean", defaultPhase = LifecyclePhase.clean)

@goal@phase 用于 javadocs。

【讨论】:

  • 这可能稍微复杂一些 @Mojo(name = "clean", defaultPhase = LifecyclePhase.CLEAN) 插件不会构建 [错误] 无法执行目标 org.apache.maven.plugins:maven-plugin-plugin:3.4:descriptor (default-descriptor)在 mymojo 项目上:提取插件描述符时出错:'目标:clean 已经存在于前缀的插件描述符中:mymojo 如果我给目标取一个不同的名称,比如@Mojo(name = "myclean", defaultPhase = LifecyclePhase.CLEAN),一切都构建得很好,但我的 mojo 没有被自动调用。跨度>
猜你喜欢
  • 2016-08-02
  • 1970-01-01
  • 2011-10-09
  • 2012-02-14
  • 2012-04-18
  • 2019-09-28
  • 2012-03-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多