编写 Maven 插件/Mojo:如何让一个目标强制执行其他目标?

2023-11-24

注意:此线程是关于编写自定义 Mojo,而不是使用插件。

我维持一个测试插件对于马文来说。不幸的是,近一年来,我一直让这种特殊的未知挥之不去,我真的很想知道如何处理它,以便其用户可以拥有更简单的配置。

假设我们的插件有两个目标:

  • prepare(阶段:生成源)
  • do(阶段:编译)

我想配置do需要的魔力prepare在构建的早期阶段执行。然而,其中没有任何内容描述符文档建议我可以。

用户可能不关心或不理解其意义prepare目标,所以我不想强迫他们在 POM 中指定它。当然,我可以直接从do,但随后prepare目标将在比预期晚的阶段运行。

(我调查了自定义生命周期,但这使得每个已经拥有prepare他们的 POM 中的目标将在运行时执行两次do.)


您可能会得到如下所示的内容(取自 CompilerMojo):

/**
 * @author <a href="mailto:[email protected]">Jason van Zyl </a>
 * @version $Id: CompilerMojo.java 941498 2010-05-05 21:24:11Z krosenvold $
 * @since 2.0
 * @goal compile
 * @phase compile
 * @threadSafe
 * @requiresDependencyResolution compile
 */

通过在您的类上设置它,它将在编译阶段执行(在本例中)。编译阶段要求前面的所有阶段都先执行(validate, generate-sources, process-sources, generate-resources, process-resources...).

基本上,在您需要的阶段(甚至相同的阶段)之后选择一个阶段,它应该可以工作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

编写 Maven 插件/Mojo:如何让一个目标强制执行其他目标? 的相关文章

  • Maven 获取特定类

    有没有一种方法可以让 maven 在将依赖项导入 uber jar shade 时仅包含特定的 class 文件 我正在寻找一种方法来将名称中包含 Client 的文件从依赖项 jar 中提取出来并添加到最终的 jar 中 任何帮助都会很棒
  • Maven 不会使用公钥来部署

    我正在使用 SSH 将我的 Java 工件部署到服务器 我设置了密钥 以便可以交互式 SSH 到服务器而无需密码 但是当我尝试运行 mvn deploy or mvn release perform 命令 它挂起 我认为是密码提示 My m
  • 使用maven为eclipse编译器设置Java 6注释处理配置

    为 Java 6 注释处理器设置 eclipse 项目编译器配置的最佳方法是什么 我的解决方案是设置org eclipse jdt apt core prefs and factorypath手动文件 这有点麻烦 在工厂路径文件中引用处理器
  • 如何从maven SNAPSHOT存储库下载SNAPSHOT版本?

    所以我有一个项目 我定期发布到 Maven 没有问题 我现在想要提供该项目的快照版本 所以我做了 mvn clean 部署 一切正常 如下所示 INFO 从 sonatype nexus snapshots 检索以前的内部版本号 上传中 h
  • M2Eclipse,META-INF/MANIFEST.MF

    我在 Eclipse 中使用 M2Eclipse 插件 而且不知道什么原因 每次在Eclipse中导入Maven项目时 总是生成一个空的 src main META INF MANIFEST MF 文件 jar 打包的项目 src main
  • 在多个生命周期中运行 Maven 目标

    我有一个情况 我想在验证阶段和报告阶段运行 cobertura 插件 我有两个配置文件 它们都应该运行 cobertura 插件 但在配置文件 A 中 我只想创建 xml html 输出 但在配置文件 B 中 我将生成包含这些结果的完整站点
  • Jetty 通过 Maven 正确运行,但作为 jar 运行不正确

    如果我的标题具有误导性 不正确 请提出更具描述性的内容 这是我能想到的最好的内容 我已经使用 spring roo 创建了自己的网络应用程序 但尚未编辑任何代码 我正在使用 Maven 和 jetty 构建并运行 Web 应用程序 当我执行
  • spring-data-jpa 和 querydsl 的 Maven 构建问题

    我有一个用于 spring data jpa 和 QueryDsl 的 Eclipse Maven 项目 我似乎对 maven apt plugin 有问题 如果我执行 mvn clean 然后执行 mvn install 它会尝试 处理
  • 获取maven插件在自己的Mojo中的目录路径

    我正在创建一个自定义 Maven 插件 在其中一篇 Mojos 中 我正在读一本Xpp3Dom使用以下代码段从 XML 文件中获取对象 File pluginsFile new File absolute path to file plug
  • 没有互联网连接的 Maven

    我是 Maven 项目的新手 我正在将 ant 项目更改为 Maven 项目 为了在 Maven 本地存储库中安装第 3 方 jar 我使用了 install 命令 它尝试下载资源 jar pom 我在我的组织中没有下载权限 因此构建安装失
  • 在 GAME 上使用 Spring 3 MVC + Maven 2 找不到映射

    我在尝试将 Spring MVC 和 Maven 集成到 Google AppEngine Web 应用程序中时遇到了一个奇怪的问题 这是我的 web xml
  • Maven编译失败(但Eclipse下编译成功)

    在构建我的网络项目时Eclipse 一切安好 没有错误 没有警告 然而 在构建项目时Maven it failes 下面是输出形式mvn compile c Users jwa Desktop tets traffic web gt mvn
  • 由于 poms 中的版本发生更改,合并来自 Maven 发布分支的更改会产生冲突

    按照标准实践 我有一个用于功能开发的 svn 主干 以及一个用于构建版本的分叉分支 该分支是使用 maven 发布插件创建的 该插件也用于创建发布 碰巧的是 偶尔的错误将在分支上修复 并且这些更改需要合并回主干 为了不错过任何更改 我希望能
  • 通过 m2e 自动更新生成的 css 文件

    我正在使用lesscss maven plugin生成不同的css文件到目标目录 target generated sources 然后使用maven war plugin将此目录添加为 webResouce 这些文件将完美生成 但是 m2
  • pom.xml中的artifactId和groupId有什么区别?

    您如何用一些现实世界的组织示例 例如 Facebook 公司或 Google 公司 向新手 Web 开发人员或程序员解释它 来自 maven apache org 命名约定 https maven apache org guides min
  • 使用 Maven 仅下载 JAR

    我想让 Maven 下载 pom xml 文件中列出的 JAR 我怎么做 目前 Maven 想要编译该项目 但失败了 我不关心编译它 因为我是手动编译的 我只想要罐子 帮助 Albert ps 背景 我手动编译它是因为我可以轻松地在Ecli
  • Mojo 配置的自定义类型转换器?

    我需要使用自定义类型 例如LunarDate 在我的 Mojo 对象中 class MyMojo extends AbstractMojo parameter LunarDate lunarDate 我想配置参数
  • 在Maven中生成Version.java文件

    我有一个使用 Ant 脚本构建的 Java 项目 我正在尝试将项目转换为 Maven 其中一项任务生成一个名为 Version java 的 Java 源文件 其中包含编译时间戳的静态字符串表示形式 如下所示 package com foo
  • 调试 Maven 的“工件没有有效范围”

    我们在工作中经常使用 Maven 我们会收到错误消息 工件没有有效范围 经过很长时间的谷歌搜索和实验 我意识到这个错误消息的含义 工件does有有效范围 只是太多了 例如 我的主 POM 仅依赖于 superframework v 1 0
  • Maven 2:如何将当前项目版本打包在WAR文件中?

    我正在使用 Maven 2 构建我的 Java 项目 并且正在寻找一种向用户呈现 pom xml 当前版本号的方法 例如使用 Servlet 或 JSP 据我所知 最好的方法是 Maven 将版本号作为文本文件打包到 WAR 中 这使我能够

随机推荐

  • 远程调试Azure网站:未命中断点

    我有一个部署到 Azure 的 ASP NET 网站 我正在使用 VS2013 NET 4 5 1 和 Azure SDK 2 2 我在管理门户中打开了VS2013的远程调试 我可以成功右键单击服务器中 Azure 节点下的网站 然后选择
  • 如何打印 HTML 页面的一部分?

    我有一个 html 页面 我想打印该 html 页面的一部分 我知道打印页面的 javascript 函数 onClick javascript window print return false 但如何打印页面的一部分呢 如果有人有想法
  • 将单键字典列表转换为单个字典

    我有一个单键字典列表 例如 lst 1 A 2 B 3 C 我想简单地将其转换为普通字典 dictionary 1 A 2 B 3 C 最简洁 最有效的方法是什么 您可以使用减少 reduce lambda r d r update d o
  • 将 Winform 应用程序转换为控制台应用程序

    是否有一种快速而肮脏的方法 或 VS 宏 将 WinForms 应用程序转换为控制台应用程序 我有许多此类应用程序不再需要作为 Winforms 应用程序 我想我可以创建一堆新项目并复制粘贴模块和类 但如果只是删除我拥有的单一表单并编辑 删
  • 从URL中获取参数值

    我正在开发一个工具 它可以获取 URL 中的值参数并用它们做一些事情 我的问题是 我似乎无法使用 document location 来显示我想要的具体值 例如 www examplesite com yourname gilgilad 我
  • 在android布局中创建水平虚线

    在我的布局中 我试图绘制一条虚线 为了绘制一条水平线 我在布局文件中定义了一个视图
  • 优化 Karatsuba 实施

    所以 我正在尝试改进 net 4 的一些操作BigInteger类提供 因为操作看起来是二次的 我已经做了一个粗略的 Karatsuba 实现 但它仍然比我预期的要慢 主要问题似乎是 BigInteger 没有提供简单的方法来计算位数 因此
  • 通过 Java 应用程序启动外部 Jar

    目前 我有一个 Java 独立 Swing 应用程序 现在 当用户单击 Swing 应用程序中的按钮时 我想启动另一个 Java 应用程序 例如 calculator jar 我可以知道什么是便携式方法吗 那么它可以在多个操作系统中工作吗
  • 在 MATLAB 中将零对角线添加到矩阵

    假设我有一个矩阵A维度的Nx N 1 在 MATLAB 中 例如 N 5 A 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 我想转型A进入一个NxN matrix B 只需添加零对角线
  • 关于链表中的虚拟节点和指针的说明

    我有以下列表节点类 def init self x self val x self next None 如果我初始化列表l and r如下 l ListNode 1 l next ListNode 4 l next next ListNod
  • 使用 pymongo 连接到 aws 时出现 ServerSelectionTimeoutError

    我正在尝试使用密钥文件连接到 AWS 实例上托管的 MongoDB 我能够通过 ssh 进入实例并连接到数据库 没有任何问题 当我尝试使用 pymongo 从远程位置连接到数据库时 我收到此错误 ServerSelectionTimeout
  • Ipython、jupyter 和内核之间有什么关系?

    就像每次我寻找有关 python 或 R 的答案时 我都会遇到 Ipython Ipython kernel Ipython Notebook jupyter 和 jupyter kernel 的这些含义 并且我实际上了解每个的用途 但我对
  • 如何修复 Heroku imagecreatefromjpeg()

    heroku 报告我一个错误 Call to undefined function imagecreatefromjpeg at line 177 其中第 177 行是 案例 jpg 案例 jpeg image data imagecrea
  • Python如何获取QLineEdit文本?

    你好世界我正在尝试让 QLineEdit 作为用户输入来工作 他们应该输入歌曲名称 输入歌曲名称后 我希望单击播放按钮后开始播放该歌曲 除了他们可以在该文件夹中输入所需歌曲的部分之外 一切正常 问题是我不确定如何制作 QlineEdit 单
  • 使用指针算术计算类型大小的替代方法

    下面的代码是100 可移植的吗 int a 10 size t size of int char a 1 char a No problem here std cout lt
  • 两个表的索引名称相同

    我正在为我们的团队构建一个小型 Mysql 数据库 对于我的数据库中的两个表 我使用了相同的索引名称 性能会受到影响吗 我做了一些测试查询 800 000 多行 到目前为止 一切顺利 索引名称特定于每个表 一张表中不能有两个同名索引 但可以
  • 如何在 Scala 中定义列表的列表?

    我想为以下类型创建一个存储 List List 2 3 1 1 List 2 2 1 但如果我执行以下操作 var y List List 1 0 2 2 List 2 1 1 2 1 然后它创建为 List AnyVal 并在我尝试执行数
  • Boost Python 中的跨模块依赖

    假设我有两个 boost python 模块 定义如下 模块A class SomeClass public SomeClass SomeClass BOOST PYTHON MODULE A class
  • 如何模拟按下按钮?

    我想测试一些表格 有没有办法模拟按下 确定 或 取消 按钮 以便按下该按钮并触发与其关联的事件处理程序 最简洁的方法是调用按钮的 Click 方法 由于以下原因 这比替代方案更好 您可以读取 OnClick 属性 检查它是否为 nil 然后
  • 编写 Maven 插件/Mojo:如何让一个目标强制执行其他目标?

    注意 此线程是关于编写自定义 Mojo 而不是使用插件 我维持一个测试插件对于马文来说 不幸的是 近一年来 我一直让这种特殊的未知挥之不去 我真的很想知道如何处理它 以便其用户可以拥有更简单的配置 假设我们的插件有两个目标 prepare