问题标签 [exec-maven-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 回答
212 浏览

continuous-integration - 如何在单元测试和集成测试之前设置测试环境?

我想在整个测试开始之前和完成以这种方式删除数据库之前创建一个数据库:

  1. 使用测试数据集创建数据库
  2. 执行 Junits
  3. 执行集成测试
  4. 使用测试数据集删除数据库

我认为在预集成测试阶段使用 maven-failsafe-plugin 是可能的,但是在 junit 测试之后会触发该阶段。

关于如何实现这一目标的任何想法?谢谢!

更新:我尝试使用 exec-maven-plugin 来实现这一点。我创建了一个加载数据库的 java 类,显然可以做任何我想做的事情。我这样称呼它:

然而,该课程从未被调用,好像测试阶段永远不会开始......我的方法是否有效?

0 投票
1 回答
1696 浏览

java - 在多模块 Maven 项目中运行 exec-maven-plugin 时出现问题

我有一个多模块 Maven 项目,它有一个主 pom 和许多子目录,每个子目录都包含引用主 pom 的项目(和 pom.xml 文件)。

在 projectA 中包含对 exec-maven-plugin 的调用,它执行 java 目标并成功调用驻留在 projectA 中某处的测试类(在 projectA/test/com/mycompany/Testclass.java 中)。插件声明如下:org.codehaus.mojo exec-maven-plugin 1.2.1

我使用以下命令执行 maven,它工作正常: mvn verify -P <profile name> -pl projectA -am

我有第二个项目 projectB,它依赖于 projectA。我在 projectB 的 pom.xml 文件中配置了一个 exec-maven-plugin 部分,该部分与上面的相同。当我使用与上面相同的命令运行 maven 时(除了 -pl 参数中的 projectB ),我得到了异常java.lang.ClassNotFoundException: com.mycompany.Testclass

显然,这是因为当我为 projectB 运行 maven 时的类路径不包括 projectA 中的目录,即使 pom.xml 依赖于 projectA(实际上它依赖于 projectA.1,而 projectA.1 又依赖于 projectA)。

我尝试在 projectB 中切换为使用 exec 目标而不是 java 目标,然后在参数中提供类路径,如下所示:

完成后,我成功加载了该类,但在 com.google.gson.JsonSyntaxException 上获得了 ClassNotFoundException

如果我从命令行运行该类,这恰好是相同的错误,如下所示

java -classpath "projectA/target/projectA-6.6.1-bSOURCE-tests.jar;projectA/target/projectA-6.6.1-bSOURCE.jar" com.mycompany.Testclass

在 projectB 中,我想我想使用 exec-maven-plugin 的 java 目标而不是 exec 目标,但是一种或另一种方式我必须能够指定类路径。

任何想法我该怎么做?

谢谢。

0 投票
3 回答
7641 浏览

linux - 如何立即显示 exec-maven-plugin 的输出

我正在使用 Maven 3.1.1 和exec-maven-plugin(1.3) 以便在构建作业期间执行 bash 脚本。

stdoutbash 脚本在withecho和上产生输出printf。我注意到脚本的输出不会立即写入 maven 控制台输出。相反,maven 控制台输出“冻结”,直到它一次被 bash 脚本的多个输出行更新。我不知道更新 maven 输出的触发器是什么(超时?完整的输出缓冲区?)但它很慢。

让我们看一个非常简单的 bash 脚本,例如counter.sh

这是我的插件配置pom.xml

当我使用 执行构建作业时mvn clean package,maven 输出冻结在exec-maven-plugin并且没有显示进度/输出,直到脚本在大约 8 分钟后完成。

当我执行另一个运行时间更长的脚本时,我每 15 分钟就会得到一个输出块。

我正在寻找的是一种在 maven 控制台输出中即时查看 bash 脚本输出的方法。

更新:使用 maven-antrun-plugin 的解决方案(感谢 Ivan)

0 投票
3 回答
7151 浏览

java - 测试阶段之前的 Maven 运行类:exec-maven-plugin exec:java 未执行类

我正在 Jenkins 盒子上运行使用 Maven 构建的 jUnit4 测试。我的目标是在执行测试之前恢复测试数据库。

看起来 exec-maven-plugin 是要走的路,但我无法让它运行。任何指针?尽管有很多示例,但 mojo 网站上的文档非常薄。

我需要运行的课程目前位于:

MyProject.src.test.java._tools.BuildTestEnvironment.java

我的 pom.xml 包括:

在 Jenkins 中运行它,什么都没有发生。如果我在本地运行它,我会得到

我尝试过的事情,但没有成功:

  1. 在 Jenkins 中运行构建:什么都没有发生。该项目构建并开始运行测试,但我的课程没有运行。

  2. 在本地运行构建:与 Jenkins 中的结果相同。那里并不奇怪。

  3. 在本地运行 generate-test-resources:ClassNotFoundException。IE:

    mvn exec:java generate-test-resources
    java.lang.ClassNotFoundException: src.test.java._tools.BuildTestEnvironment

  4. 将该类编译到一个 jar 中,并将其添加到我的 pom.xml 中。

更新:

在阅读了@ppuskar 的评论后,我尝试移动我的 buildxxx 类。将其移至 src.main.java._tools.BuildTestEnvironment 后,我​​仍然收到类似的消息。这是我的构建日志,以防万一:

[调试] 调用:test.java._tools.BuildTestEnvironment.main()
[调试] 插件依赖将被排除。
[DEBUG] 将包含项目依赖项。
[DEBUG] 收集的项目工件 [joda-time:joda-time:jar:2.3:compile, net.sf.jt400:jt400:jar:6.7:compile, junit:junit:jar:4.11:compile, org.hamcrest:hamcrest -core:jar:1.3:compile, com.fasterxml.jackson.core:jackson-core:jar:2.3.0:compile, com.fasterxml.jackson.core:jackson-databind:jar:2.3.0:compile, com .fasterxml.jackson.core:jackson-annotations:jar:2.3.0:compile, org.hamcrest:hamcrest-all:jar:1.3:compile, org.apache.logging.log4j:log4j-api:jar:2.0-rc1 :compile, org.apache.logging.log4j:log4j-core:jar:2.0-rc1:compile]
[DEBUG] 收集的项目类路径 [C:\workspace\VSP_UnitTest\target\classes]
[DEBUG] 添加到类路径:file:/C:/workspace/VSP_UnitTest/target/classes/
[DEBUG] 添加项目依赖工件:joda-time 到类路径
[DEBUG] 添加项目依赖工件:jt400 到类路径
[DEBUG] 添加项目依赖工件:junit 到类路径
[DEBUG] 添加项目依赖工件:hamcrest-core 到类路径
[DEBUG] 添加项目依赖工件:jackson-core 到类路径
[DEBUG] 添加项目依赖工件:jackson-databind 到类路径
[DEBUG] 添加项目依赖工件:jackson-annotations 到类路径
[DEBUG] 添加项目依赖工件:hamcrest-all 到类路径
[DEBUG] 添加项目依赖工件:log4j-api 到类路径
[DEBUG] 添加项目依赖工件:log4j-core 到类路径
[DEBUG] 加入线程 Thread[test.java._tools.BuildTestEnvironment.main(),5,test.java._tools.BuildTestEnvironment]
[WARNING] java.lang。 ClassNotFoundException: test.java._tools.BuildTestEnvironment
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged( Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at org .codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:281)
在 java.lang.Thread.run(Thread.java:724)
[INFO] -------------------------------- ----------------------------------------------------
[INFO] 构建失败
[INFO] -- -------------------------------------------------- --------------------
[INFO] 总时间:2.602 s
[INFO] 完成时间:2014-05-15T14:38:50-05:00
[INFO]最终内存:12M/152M
[INFO] ----------------------------------------- -------------------------------------------

0 投票
2 回答
9122 浏览

java - java maven exec-maven-plugin 未在 mvn clean install 上执行

上一个问题的后续: Maven run class before test phase: exec-maven-plugin exec:java not execution class

我在詹金斯盒子上运行 jUnit4 测试,用 maven 构建。在构建的测试阶段之前,我需要运行一个特定的 main-method java 程序。目的是在测试运行之前恢复测试数据库。

如果我运行分配给这个 exec 的确切阶段,我的类将按预期执行;但是当我运行整个构建时,我的类没有执行:

具体来说,它运行:
mvn -X exec:java generate-test-resources

但不运行:
mvn -X -e install
--或--
mvn -X -e clean install

pom.xml: 我的 pom.xml 文件包括:

生命周期默认值: 我没有对 maven 的生命周期感到厌烦。日志将其报告为:

0 投票
2 回答
32261 浏览

java - Maven 无法执行目标 org.codehaus.mojo:exec-maven-plugin:1.3

嗨,我正在使用 maven 编译 jersey web 服务项目,但在 windows 2008 服务器中编译它时出错。

这是错误:

这是我的 Maven 和 Java 版本:

这是我在 Windows 2008 中的 pom.xml 的内容。 pom.xml 的内容与 mac 略有不同。(例如:java版本,:

0 投票
0 回答
1990 浏览

maven - 无法使用 exec-maven-plugin 授予文件权限

我正在尝试使用下一个 exec-maven-plugin 配置授予文件权限:

它打印

chmod: 无法访问 '...my_path.../*.sh': 没有这样的文件或目录

但是当我更换

通过<argument>${somePath}/myfirst_script.sh</argument> - 一切正常!

您能否澄清如何使用这种方法并使用“* .sh”使论点更普遍?

编辑

最初我需要这个,因为我使用依赖插件来解压缩我的依赖项,但由于某种原因它失去了文件权限,似乎相关的 JIRA 是 - https://jira.codehaus.org/browse/MDEP-109

我知道有 antrun 方法可以返回权限,但实际上它看起来很难看,我想避免在我的 pom.xml 中使用 antrun 插件......

0 投票
1 回答
61 浏览

maven - exec-maven-plugin 不使用第三方存储库

我配置了几个第三方存储库。我知道它们配置正确,因为它正在从它们下载工件。但exec-maven-plugin似乎不承认那些第三方回购。它在 Maven Central 中查找它的依赖项,然后告诉我 POM 不存在。当然不是;它在第三方回购!我需要做一些特别的事情来告诉exec-maven-plugin使用第三方回购吗?

0 投票
1 回答
1156 浏览

maven - Maven exec插件跳过参数

我的 pom 中有用于执行 grunt 的 maven exec 插件。当我调用 mvn clean install 时,有没有办法跳过插件执行。我无法放入<skip>true</skip配置中。我正在寻找像 mvn clean install -Dexec.skip=true 这样的选项。有什么线索吗?

0 投票
1 回答
1390 浏览

java - 如何配置 maven,以便 maven exec 插件可以访问 'src/' 外部目录中的配置文件

我正在访问我的代码中的属性文件

如果属性文件在资源目录中,一切正常,我使用 maven exec 插件运行程序没有任何问题。我只需要打电话

但这种方法作为一个很大的缺点。它包括属性文件

如何更改 maven 配置,以便 'config/config.properties' 文件可用于 maven exec 插件,而无需位于 'src' 内且不包含在 jar 中?

注意:为了澄清,我不知道当应用程序在生产中运行时必要的配置文件在哪里。我只知道它在类路径中。这就是为什么我需要使用getResourceAsStream()并且我需要它不包含在 jar 文件中。