我已经建立了一个基本的Jenkins 流水线,它在很大程度上实现了我的预期。
但是,我使用的是 ant,它需要访问特定的 jar 文件。我已经像这样指定了构建步骤:
stage('Build') {
// Build the project
env.PATH = "${tool 'ant'}/bin:${env.PATH}"
sh 'ant -f dita-tools/build_all.xml -lib $WORKSPACE/dita-ot/lib:$WORKSPACE/dita-ot/lib/saxon'
}
我通过此管道运行的构建失败并生成以下错误:
java.lang.ClassNotFoundException: org.dita.dost.module.GenMapAndTopicListModule
据我所知,这是由于 ant 无法访问 dita ot 中的 dost.jar。我尝试通过多种方式定义此参数,包括专门引用 dost.jar (我有许多 jar 包要包括在内),但每次它失败时都会出现相同的错误。
当我在 Jenkins 中组装一个独立的 ant 项目时,ant 通过我上面提供的论点访问 jar 没有问题。我有没有更好的方法在管道中提供这个参数/依赖关系?
更新: 我在构建脚本中为类路径添加了一个 echo 语句,并且能够验证在构建脚本中将 jar 添加到类路径中确实有效。因此,出于所有意图和目的,ant 可以访问目标的所有相关基础工具包 jar,但错误仍然存在。在这一点上,问题似乎与 jenkins 管道的工作方式有关,而不是与 dita ot 本身有关?