问题标签 [maven-exec-plugin]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
173 浏览

maven - 从 Bash 脚本调用 Maven 工件,传递任意参数?

目的是拥有一个 Bash 脚本,该脚本从使用 Maven 构建的项目中运行 Java 程序,理想情况下,其类路径使用 Maven 缓存所需的所有 JAR。

我可以为此想到两种解决方案,但它们都有些难看或无法处理某些问题:

1)使用exec:java插件/目标。我无法解决的问题是无法使用此解决方案从命令行向程序传递任意参数:传递参数的唯一方法是设置mvn命令行参数的值。因此,如果有多个参数,则需要引用该值。但是,如果传递给程序的参数需要引用并且例如选项值可以包含空格,那么似乎没有办法做到这一点。

2)使用依赖插件创建一个包含使用build-classpath目标的类路径的文件。生成一个包含项目所依赖的 Maven 缓存中所有 JAR 位置的文件非常棒。但是,似乎不可能将项目工件 JAR 的位置也添加到该文件中。因此,该文件中的内容需要以某种方式与项目 JAR 的位置相结合:

2.1) 使用mvn package和使用目录中的JAR target。这很难看,因为理想情况下我们还想使用 Maven 缓存中的 JAR,比如依赖项

2.2) 有另一个虚拟 Maven 项目,该项目取决于我要运行的项目并在build-classpath那里使用目标。然后,这将为我提供完整的类路径,但代价是需要拥有另一个项目并在该项目中运行必要的目标。如果项目位于原始项目的子目录中,我也看不出如何将这个假项目构建为主项目的一部分,除了可能使用exec:exec插件/目标,这很丑陋。

有什么我遗漏的或推荐的如何以更直接的方式做到这一点的方法吗?

更新:在评论中有人问我为什么要首先使用 Maven 缓存。原因是在这种情况下,我们知道所需的一切都已经在 maven 缓存中,我们谈论的是相当大的依赖链,使用不同的机制和不同的缓存会感觉非常尴尬和笨拙,只是为了使这项工作。很难理解为什么 Maven 没有立即为此提供更简单的解决方案。

0 投票
1 回答
956 浏览

java - 无法使用 exec-maven-plugin 执行 Maven 多模块项目

我在这里有一个多模块 Maven 项目。

父项目共有3个模块,with-paranamer,without-paranamer。

with-paranamer 和 without-paranamer 模块相互独立,都依赖于公共模块。

在 without-paranamer 模块中,我添加了对像这样的通用模块的依赖。

下面是项目的结构。

我想ParametersExample 使用 exec-maven-plugin 在没有参数的模块中执行类。所以我在父 pom.xml 的 pluginManagement 下添加了 exec-maven- plugin
在没有参数的模块中,我添加了这样的插件

我已按照此处的 stackoverflow 帖子中提到的上述说明进行操作。

当我运行mvn verify命令时成功。

但是当我尝试运行命令时,我mvn exec:java -Dexec.mainClass=ParametersExample -pl without-paranamer遇到了错误。

如何使用 exec-maven-plugin 使我的程序成功运行。

0 投票
0 回答
265 浏览

maven - Maven:如何使用不同的配置文件执行两次 pom?

我想在 pom 中使用 Maven 进行构建,可以使用两个不同的配置文件构建。

换句话说,我的任务是强制构建,以便构建在目标文件夹中生成两个不同的构建,就像我将执行“maven install -P”两次一样。

所以,要更清楚:

  • 一次调用
  • 基于当时关联的配置文件的两个不同结果

我已经尝试过,exec-maven-plugin但我不确定是否是正确的方法,因为它没有做我想要的。

我该怎么做?

这是我正在尝试的pom。任务是:

  • 从另一个项目复制资源
  • 根据配置文件替换内容
  • 构建两个配置文件。

pom.xml

0 投票
1 回答
1139 浏览

maven - Maven:如何在分叉的 JVM 中执行依赖项?

使用maven-exec-plugin一个java目标,我执行一个 jar 程序来验证我的项目中的一些文件。当验证失败时,它调用System.exit返回一个非零返回码。

问题是它与 Maven 在同一个 JVM 中执行,所以当它调用 exit 时,处理停止,因为它没有 fork

我将其配置为使用 java 目标执行maven-exec-plugin如此。执行 jar 在我的 Nexus 存储库中,所以我想将它作为依赖项下载到我的 pom.xml 中。

配置 maven-exec-plugin 依赖项的一个非常好的特性是它会下载 jar 及其所有依赖项,因此无需使用 maven 程序集插件将所有 jar 包含在可执行文件中。

如何配置我的 pom.xml 以执行 jar 依赖项并在失败时正确停止?

0 投票
1 回答
736 浏览

maven - Maven:如何防止 exec 插件显示其堆栈跟踪?

下面的简单 maven exec 插件显示了一个堆栈跟踪,这使我的用户很难理解正在发生的事情。如何防止堆栈跟踪并获得更清晰的输出?

这是执行命令false强制失败的简单 pom.xml :

这是肮脏的输出:

这个堆栈跟踪是 maven exec 插件的,没有信息对我的用户有用。如何防止显示第一个[ERROR]和下一个之间的所有内容[INFO]

0 投票
0 回答
119 浏览

maven - M2E 在 exec-maven-plugin 中的 Filechange 之后触发增量构建

我们有两个包含消息文件的资源目录

过滤后,我们要合并目录并连接重复文件:

之后,resourcesMerged 文件夹被添加到 WAR 文件中

这在控制台 maven 上完美运行。对于 m2e,我们添加了以下配置:

现在的问题是,当生成合并文件时,会触发另一个增量构建,这会导致无限循环。我知道我可以设置 runOnIncremental=false 但是在更改文件时我总是要清理整个项目。我可以忍受,但不知何故,lesscss-maven-plugin(https://github.com/marceloverdijk/lesscss-maven-plugin)也在增量构建的目标文件夹中生成文件,但随后eclipse不会触发另一个构建事件,我怎样才能实现它呢?

我已经看到他们称之为buildContext.refresh(output);是否可以在 maven-exec-plugin 中获得对 buildContext 的引用?

0 投票
1 回答
189 浏览

java - 当我从 cmd 运行 java Maven 项目时,我得到 MojoExecutionException

我从命令行运行 Maven-Project 遇到问题我在 cmd 中使用此命令运行名为 mainClass 的类

这是我的 pom 文件中的内容:

我得到由类未找到异常引起的 Mojo 异常,但实际上我不知道应该在哪里提供要运行的类的名称或路径

这是命令行中命令的响应

在此处输入图像描述

在此处输入图像描述

0 投票
1 回答
600 浏览

maven - Maven 列表/数组属性命令行覆盖

有没有办法使用系统属性方法传递 Maven 列表/数组属性(例如 maven-exec-plugin arguments 可选参数)?

我知道 arguments 可选参数可以被 exec.args 环境变量覆盖,而 commandlineArgs 可选参数可以被 exec.args 系统属性覆盖。但是,当涉及到具有此类列表/数组配置属性的其他插件时,我想知道是否有通用的 Maven 命令行方法来使用系统属性覆盖插件配置的此类列表/数组属性?

我希望通过以下命令执行此操作:

但它不像我预期的那样工作。

0 投票
0 回答
629 浏览

java - 优雅地停止由 maven-exec 插件启动的 java 程序

这符合问题:Gracefully stop a java process started by maven-antrun-plugin

除了这涉及 maven-exec-plugin 我尝试了上面问题中提到的灵魂,它使“maven-process-plugin”成为 ude。但是这个插件不支持提供类路径。

我的 pom.xml 看起来像:

理想情况下,我应该在集成测试后阶段有一些机制来终止上面启动的进程(这是一个长时间运行的进程)?但我找不到任何可以帮助我做同样事情的配置:https: //www.mojohaus.org/exec-maven-plugin/exec-mojo.html

有出路吗?

0 投票
1 回答
677 浏览

java - maven:执行而不实际构建任何东西

我有一个在 pom 文件中有最终版本的项目,比如说 12.3.45。我前段时间已经为这个版本构建了代码,所有构建的 jar 都在本地 maven repo 中。

然后在某个时候我运行了 mvn clean,所以所有的目标文件夹都被删除了。

现在我想使用 mvn exec:java 尽快执行一些代码。最好不要建造任何东西,因为为什么不呢?所有的罐子在某个时候都已经构建好了,我知道在那之后没有任何代码更改。如何强制 maven 尽快执行代码,而不是重新编译任何东西,而只是重用本地 repo 中的 jars?谢谢。