【问题标题】:skip tests with maven release plugin in Jenkins在 Jenkins 中使用 Maven 发布插件跳过测试
【发布时间】:2017-10-24 14:28:58
【问题描述】:

我有一些包含此命令的 bash 脚本:

$MAVEN -f "${PROJECTROOT}/pom.xml" org.apache.maven.plugins:maven-release-plugin:2.4.1:prepare -Darguments="-DskipTests"

问题是没有跳过测试。 我检查了这个issue,它提供了正确的命令来跳过测试。当我使用 mvn 在我的机器上本地尝试相同的命令并且不使用环境变量时,该命令有效。

现在我在 Jenkins 中使用它作为托管脚本,它似乎每次都失败。测试不会被跳过。我做错了什么?

我们 Jenkins 上的 mvn 版本是 3.2.5

【问题讨论】:

  • 我认为问题在于你不能跳过 release:prepare 的测试,它会破坏插件的对象。
  • @EssexBoy 谢谢,但是当我在另一个项目上本地运行它时,我得到:[INFO] [INFO] --- maven-surefire-plugin:2.12.4:test (default-test ) @ mum-springclient-javaconfig --- [INFO] [INFO] 跳过测试。
  • 奇怪,你使用了正确的语法。也许这是由脚本中的其他内容引起的。能否请您分享完整的相关 Jenkins 日志和脚本?
  • 真的就是这样,还在执行测试。恐怕它是我的 pom.xml 中的一些配置文件或其他东西,它强制运行测试。这可能吗?

标签: bash maven jenkins


【解决方案1】:

如果你查看脚本 mvn 中的 mvn 命令,我的看起来像这样:

exec "$JAVACMD" \
  $MAVEN_OPTS \
  $MAVEN_DEBUG_OPTS \
  -classpath "${M2_HOME}"/boot/plexus-classworlds-*.jar \
  "-Dclassworlds.conf=${M2_HOME}/bin/m2.conf" \
  "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \
  ${CLASSWORLDS_LAUNCHER} "$@"

所以 -DskipTests 只是一个 java 系统参数,是 $@ catch-all 的一部分。

你应该看看你的 $MAVEN 脚本

【讨论】:

  • 您的命令看起来很高级。在我的 $MAVEN 中只包含我的 mvn 可执行文件的路径。以一种非常简单的方式,我的命令是:'mvn release:prepeare -Darguments="-DskipTests" -DskipTests'
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-09-12
  • 1970-01-01
  • 1970-01-01
  • 2019-06-23
  • 1970-01-01
  • 2014-08-18
  • 2013-04-02
相关资源
最近更新 更多