从 Hudson 传递 Maven 调试标志
Posted
技术标签:
【中文标题】从 Hudson 传递 Maven 调试标志【英文标题】:Passing the Maven Debug Flag from Hudson 【发布时间】:2011-04-22 23:29:14 【问题描述】:我在使用 hudson 的 maven 构建时遇到问题。如果我可以看到传入了 -X 标志的 maven 输出,这个问题将相当容易解决。但是我找不到这样做的方法。如果我在作业配置的“构建”部分的“目标和选项”字段中指定“-X”,我的控制台输出看起来与我根本没有通过“-X”标志完全相同。调试日志是否在其他地方?或者我需要通过其他方式传递“-X”标志吗?
更新:
这不起作用的原因是因为构建在 hudson 过程的“解析 POM”部分失败,然后才真正启动真正的 Maven 构建并传入我在项目中指定的任何参数。因此,我真正需要的是一种在 hudson 的 maven 构建的“解析 POM”部分期间获得更好日志记录的方法。
【问题讨论】:
【参考方案1】:帮助文本中是这么说的。
指定要执行的目标,例如 作为“全新安装”或“部署”。这 字段也可以接受任何其他 Maven 的命令行选项,例如 “-e”或“-Dmaven.test.skip=true”。
我也会把它放在那里的。
maven 帮助给了我以下两个选项:
-X,--debug Produce execution debug output
-e,--errors Produce execution error messages
也许你可以试试 --debug 或 -e 开关
【讨论】:
我以前试过这个(然后又试了一次),但没有得到额外的输出。似乎它应该工作,但它不是。如果我直接从命令行使用 -X 或 --debug 运行相同的构建,我会得到很多额外的信息。但是,我要解决的特定问题仅在从 hudson 运行构建时才会发生。 添加一个额外的构建步骤(批处理或 shell 脚本)并运行 set 命令。将输出与从命令行手动发出的 set 命令的输出进行比较。这可以帮助您查看 Hudson 看到的环境变量和您的命令行环境变量之间是否存在差异。路径变量在某些情况下具有巨大的影响。 -- 我希望我的假设是正确的,即您使用与 Hudson 相同的用户帐户运行命令行测试。【参考方案2】:在 Jenkins 中,我认为 Hudson 也是如此,命令行参数可以在“目标”设置中传递给 Maven。我能够通过将 -X 参数添加到“目标”的开头来传递它。
-X package install
Jenkins 显然盲目地将此设置附加到 mvn 命令行的末尾。
【讨论】:
【参考方案3】:我对 Hudson 1.398(Maven 2.0.10,jdk 1.6.0_07)有完全相同的问题:在解析 pom 文件期间构建失败。它可以在本地运行,也可以在从 Hudson 工作区手动启动时运行。
该构建需要设置一个环境变量(用于模块的路径),但该环境变量似乎没有从 Hudson 传播到 Maven。所以,和你一样,我也尝试使用 -X 选项从 Maven 获取更多详细信息,但它似乎也没有被传播。
【讨论】:
以上是关于从 Hudson 传递 Maven 调试标志的主要内容,如果未能解决你的问题,请参考以下文章