Maven:从命令行执行和配置中多次执行

2024-03-05

我想从命令行执行插件目标,但执行插件的多次执行。为此,我的 POM 如下所示:

<plugin>
    <groupId>xxx.yyy</groupId>
    <artifactId>zzz</artifactId>
    <version>1.1.6</version>
    <executions>
        <execution>
            <id>default-cli-1</id>
            <goals>
                <goal>mygoal</goal>
            </goals>
            <configuration>
                .... config1 ....
            </configuration>
        </execution>
        <execution>
            <id>default-cli-2</id>
            <goals>
                <goal>mygoal</goal>
            </goals>
            <configuration>
                .... config2 ....
            </configuration>
        </execution>
    </executions>
</plugin>

我想做的是这样的:

mvn xxx.yyy.zzz:mygoal

然后将执行两次处决。但我不知道怎么做。

我知道我不能使用<id>从命令行执行时。这就是default-cli是为了.但是,那<id>内必须是唯一的<executions>这意味着我只能把default-cli on one execution.

Maven版本3.0.5.


您可以从 Maven 开始从命令行执行目标(及其执行)3.3.1 on and this https://issues.apache.org/jira/browse/MNG-5768新功能,通过@executionId附加选项。

关于 Maven 和执行 ID 生成,您还可以检查这个问题 https://stackoverflow.com/questions/34590452/what-is-the-implicit-id-of-a-maven-plugin-execution.


在Maven之前3.3.1您可以将这两个执行绑定到一个通常不会造成损害的阶段(例如validate)并有类似以下内容:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <version>2.5</version>
    <executions>
        <execution>
            <id>execution-1</id>
            <phase>validate</phase>
            <goals>
                <goal>jar</goal>
            </goals>
            <configuration>
                <classifier>something1</classifier>
            </configuration>
        </execution>
        <execution>
            <id>execution-2</id>
            <phase>validate</phase>
            <goals>
                <goal>jar</goal>
            </goals>
            <configuration>
                <classifier>something2</classifier>
            </configuration>
        </execution>
    </executions>
</plugin>

然后执行:

mvn validate

作为无害阶段的一部分,您将有效地执行同一插件的同一目标的两次执行。

如果您不想默认将它们作为此阶段的一部分(可以理解),那么您可以将它们移至配置文件并在执行过程中将其激活:

mvn validate -PpluginGoalExecution

为了完整起见,配置文件如下所示:

<profile>
    <id>pluginExecution</id>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>2.5</version>
                <executions>
                    <execution>
                        <id>execution1</id>
                        <phase>validate</phase>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                        <configuration>
                            <classifier>something1</classifier>
                        </configuration>
                    </execution>
                    <execution>
                        <id>execution2</id>
                        <phase>validate</phase>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                        <configuration>
                            <classifier>something2</classifier>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</profile>

不言而喻:在这种情况下,配置文件的 id 应该非常清楚地说明它将实际执行哪个插件和哪个目标(即配置文件的目的,像往常一样)。

Update
只是装饰性的,但您也可以添加到元素上方的配置文件构建中:

<defaultGoal>validate</defaultGoal>

这样您只需要运行以下 Maven 命令(仅配置文件激活):

mvn -PpluginGoalExecution

然后它会自动执行验证阶段和配置的插件执行。不是一个大的变化(正如我所说,装饰性的),但可能更接近于插件目标执行而不是 Maven 阶段调用(再次强调,只是外观)。

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

Maven:从命令行执行和配置中多次执行 的相关文章

  • 如何将配置文件添加到 Eclipse 中的默认 Maven 目标?

    我在 Eclipse 中使用 Maven 来构建和部署代码 选择时 Context Menu gt Run As 几个Maven目标如下 据我所知 如果我想创建自定义构建配置 我会单击 运行配置 来创建自定义配置 然而 似乎没有办法修改菜单
  • 如何让Spring RabbitMQ创建一个新的队列?

    根据我对rabbit mq的 有限 经验 如果您为尚不存在的队列创建新的侦听器 则会自动创建该队列 我正在尝试将 Spring AMQP 项目与rabbit mq 一起使用来设置侦听器 但出现错误 这是我的 xml 配置
  • JavaFX Platform.runLater 的使用以及从不同线程访问 UI

    我有几个问题Platform runLater 我有一个 JavaFX 应用程序类 在这个类中 我运行一个线程 该线程从网络套接字读取数据 现在当我创建一个新的Stage在线程内部 系统抛出异常 JavaFX 事件调度程序线程和我的网络读取
  • 设置 SWT Shell 的默认字体

    有没有办法为整个 Shell 设置默认字体 以便任何新控件都将使用相同的字体 看来现在我必须为我创建的每个控件设置字体 这导致了太多的冗余 默认使用的字体由平台选择 请参阅中的其他信息 类字体 SWT 标准小部件工具包 http book
  • 在Java中清空数组/处理

    除了循环遍历数组中的每个元素并将每个元素设置为 null 之外 Java 处理中是否有一个本机函数可以简单地清空数组 或销毁它 以便能够将其重新声明为新数组 There s Arrays fill myArray null 并不是说它执行的
  • 无法实例化接收器 com.parse.GcmBroadcastReceiver

    我正在编写一个使用 GCM 通知和解析推送的离子应用程序 这个应用程序正在使用这些插件 com ionic keyboard 1 0 3 Keyboard com phonegap plugins PushPlugin 2 4 0 Push
  • RSA SignatureException:签名长度不正确

    我在签署 rsa 签名时遇到问题 我有一个用私钥加密的签名 然而 当我尝试使用公钥验证它时遇到问题 我得到以下异常 java security SignatureException Signature length not correct
  • Java Spring 应用程序存在内存泄漏。系统非堆内存不断增加

    我已使用 yourkit 分析器监视我的 Web 应用程序 保留最大大小的主要对象是 SessionFactoryImpl webappclassloader 和 CGlib 对象显示 spring crone调度程序会导致内存泄漏吗 我尝
  • 哈希码是否用于加速集合中的对象查找?

    IIUC 相同类型的两个不同对象可以存储在 HashSet 中 即使两个对象在以下情况下返回相同的值 hashCode 叫做 例如根据本文 https eclipsesource com blogs 2012 09 04 the 3 thi
  • 支持通过 OAuth 进行 Facebook/Twitter 身份验证的 CAS 服务器

    我正在寻找一个支持 Facebook Twitter 通过 OAuth 进行单点登录身份验证的 CAS 服务器 我检查过 JASIG CAS 服务器 但它看起来不支持它们 我的 java web 应用程序基于 Spring Security
  • 以编程方式设置 Logback Appender 路径

    我正在尝试以编程方式设置 Logback 附加程序路径 滚动文件附加器 http logback qos ch apidocs ch qos logback core rolling RollingFileAppender html准确地说
  • 从关卡堆栈中获取相对比例的数学

    为这个可怕的标题道歉 我花了 10 分钟试图用一句话来解释这一点 但失败了 虽然提示这个问题的应用程序是用Java Android 编写的 但我认为它非常通用并且适用于任何语言 欢迎使用伪代码 或简单的英语 回复 我不确定是否应该标记所有通
  • SimpleDateFormat 将 lenient 设置为 false 时出现异常

    为什么这段代码会抛出无法解析日期的异常 SimpleDateFormat f new SimpleDateFormat yyyy MM dd T HH mm ss 000Z f setLenient false String dateStr
  • 无法映射 ftl 文件中的 jsonRequest 属性

    我想在 FTL 文件中映射下面的 json 文件市场和子市场字段 但是当我尝试下面的代码时 它没有映射 有人可以帮助我吗 我从 2 天开始就无法映射它 Json请求 ProcessOrderRequest prevalidationMode
  • H2 - (相当)长的 INSERT 失败,错误 42000

    H2 内存中 插入 错误 42000 尝试过版本 1 4 196 1 4 197 1 4 199 我还尝试在 H2 服务器 本地 上执行 INSERT 也失败 给出错误的行 抱歉 但出于安全原因 我无法生成更多 INSERT INTO tb
  • 将带有 webapp 的 WAR 部署到 Maven 中央存储库是否有意义?

    这样做有意义吗 如果是 我在哪里可以找到使用简单的 Web Hello World 执行此操作的示例 当人们从 Maven 执行 Web 应用程序时 他们会使用 Jetty 来运行它吗 我想 tomcat 太重了 任何帮助将不胜感激 谢谢
  • JMockit - 初始化问题

    当我使用以下测试时 我收到警告 警告 JMockit 是按需初始化的 这可能会导致某些测试失败 请检查文档以获取更好的初始化方法 这是我的测试实现 package test import static mockit Mockit impor
  • 编写自定义 Eclipse 调试器

    EDIT 一定有某种方法可以解决这个问题 而无需编写全新的调试器 我目前正在研究在现有 java 调试器之上构建的方法 如果有人对如何获取 Java 调试器已有的信息 有关堆栈帧 变量 原始数据等 有任何想法 那将非常有帮助 我想要做的是我
  • 使用 Runtime.getRuntime().exec() 进行重定向不起作用

    我需要从程序执行命令 命令行是可以的 我在终端试了一下 但是在程序中不行 我从我的代码中添加一个副本 File dir new File videos String children dir list if children null Ei
  • H2 用户定义的聚合函数 ListAgg 不能在第一个参数上使用 DISTINCT 或 TRIM()

    所以我有一个 DB2 生产数据库 我需要在其中使用可用的函数 ListAgg 我希望使用 H2 的单元测试能够正确测试此功能 不幸的是H2不直接支持ListAgg 但是 我可以创建一个用户定义的聚合函数 import java sql Co

随机推荐

  • 当通过开发工具查看时,Selenium WebDriver 无法找到页面源中不存在但 HTML 中存在的元素

    我正在使用 Selenium Web Driver HtmlUnitDriver 来搜索网页上的元素 我只能搜索页面源中可见的那些元素 不过 我可以使用 Internet Explorer 开发人员工具 F12 查看这些元素的详细信息 当我
  • 无法为字符串生成正则表达式

    我有一根绳子abc 123 243 xyz 432 567 我想生成一个与特定字符串匹配的正则表达式 应根据以下示例和具体结果来测试正则表达式 Exp 1 abc 123 234 xyz 432 567 123存在于 123 243 结果
  • 使用 jQuery 隐藏本机工具提示

    当用户将鼠标悬停在具有标题属性的锚标记上时 是否有办法隐藏本机工具提示操作 我不想删除它 只是不显示默认工具提示操作的令人讨厌的黄色框 UPDATE 在阅读了其他几篇文章后 我认为我无法隐藏本机工具提示操作的标题属性 但我试图跳出框框思考
  • UITextField 不会成为FirstResponder

    我在让文本字段接受成为FirstResponder 指令时遇到问题 我提供了一种自定义机制来在导航栏中创建标题 我有另一个视图控制器成功地使用了相同的技术 在 viewDidAppear 上我触发 void addTitleTextFiel
  • 如何使用 Python Popen 执行多个参数?

    我正在尝试制作一个带有按钮的 PyGtk Gui 当用户按下这个按钮时 gnome terminal提示用户写入密码 然后它会克隆这个Git 存储库 https github com pererinha gedit snippet jque
  • 从 pandas 数据框中提取字典值

    我需要从 json 文件导入的数据集中添加额外的功能 它看起来是这样的 f1 pd read json https raw githubusercontent com ansymo msr2013 bug dataset master da
  • 在 Material Angular 中显示一个简单的警报对话框

    我正在使用材质角度 来自角材料 https material angular io 该网站中的示例似乎有点过于复杂 互联网上的所有其他教程似乎要么已经过时 要么正在使用 AngularJS 如何显示一个带有标题 消息和确认 取消按钮的简单警
  • 如何使webpack 5.x src路径是项目真正的src路径而不是webpack配置文件根路径

    我在配置中配置 webpack src 路径 如下所示 path resolve dirname src 看来webpack没有找到真正的项目src路径 源路径是 web pack 配置路径 现在我得到这样的路径 Users xiaoqia
  • Go代码可以在windows中生成dll或者C++/C#可以调用golang代码吗?

    Go函数可以被调用吗C or C windows 上的代码 Go支持在Windows中生成dll吗 不 Go 代码是静态链接的 其原因在于 Go 的运行时 它嵌入在每个可执行文件中 Edit 显然 通过大量间接的方式是可能的 但在实践中远未
  • 在 Python 中,如何在列表中包含单个反斜杠元素?

    首先 我在 Windows 10 上运行 Python 3 6 python 中的反斜杠字符是一个特殊字符 充当字符串的 转义符 因此 无法直接打印 如果我想打印一个反斜杠 这样做是行不通的 print error message 解决这个
  • 电报机器人 - 保留问题和答案

    我的电报机器人是一个对话框 它需要保留问题和答案 如 TriviaBot 执行此操作的最佳 最有效 方法是什么 以用户 ID 作为键的数据库 有很多电报机器人 但是哪里有带有源代码的示例来获取想法 您的问题与 telegram bot AP
  • 将 vim 的强大功能融入 WM:模态窗口管理? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我是 Vim 的忠实粉丝 并且在很大程度上坚持极其高效的模式编辑风格 在使用 Vim 一些经验之后 我决定使用其他分享其高效 快速键盘使用理念的软件
  • Chartjs 气泡图中的各个气泡可以有标签吗?

    我正在使用 Chartjs 创建气泡图 我能够创建描述每个气泡的工具提示 但我的图表的用户可能无法将鼠标悬停在其上以查看工具提示 BubbleData 对象格式不包含标签元素 无论如何我都放了一个 不走运 我尝试过图表数据对象的 标签 元素
  • 从 AJAX 调用异步 Servlet

    我想要完成的事情并不太复杂 但由于我不太熟悉 AJAX 所以遇到了一些麻烦 实现后 我将拥有一个 JSP 其中有一个调用异步 Servlet 的按钮 servlet 将运行一个长时间运行的任务 并在部分任务完成时通过向表中添加行来向用户提供
  • 如何从父函数运行子函数?

    我想通过按父视图中的按钮来调用 childFunction demo ChildView import SwiftUI struct ChildView View func childFunction print I am the chil
  • Bootstrap:左对齐按钮文本

    如何在引导按钮中将文本左对齐 我有多个带有不同长度文本的按钮 并且所有按钮都需要具有相同的宽度 我已经使用类实现了这一点col xs 11 示例按钮代码如下
  • 将双精度常数定义为十六进制?

    我希望将 1 0 以下最接近的数字作为浮点数 通过阅读维基百科的文章IEEE 754 http en wikipedia org wiki IEEE 754 1985 Double precision 64 bit我设法发现 1 0 的二进
  • 持久化对象列表

    我懂了 javax jdo JDOFatalUserException don Comment id 的元数据错误 不能有 java lang String 主键并且是子对象 拥有字段是 don Post comments 嵌套的Throw
  • 如何在java中构建SPARQL查询?

    是否有一个库 能够像以下那样以编程方式构建 SPARQL 查询CriteriaBuilder在 JPA 中或像使用PreparedStatement对于 SQL 类似 对于 SQL 在 Java 中构建 SQL 字符串的最简洁方法 http
  • Maven:从命令行执行和配置中多次执行

    我想从命令行执行插件目标 但执行插件的多次执行 为此 我的 POM 如下所示