如何使Jenkins管道中的Ant可用罐子文件



我已经整理了一个基本的詹金斯管道,它在大多数情况下都可以做到。

但是,我使用的是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

我可以看出,这是由于蚂蚁无法访问dita ot中的dost.jar。我尝试过将此参数定义多种方法,包括专门引用dost.jar(我要包含许多罐子),但是每次失败时都会出现相同的错误。

当我在詹金斯(Jenkins)进行独立的蚂蚁项目时,蚂蚁通过我上面提供的论点访问罐子时没有问题。我有更好的方法可以在管道中提供此论点/依赖性吗?

更新:我在我的构建脚本中添加了一个为classpath的回声语句,并能够验证在构建脚本中将jar添加到build脚本中的jars实际上确实有效。因此,就所有意图和目的而言,ANT都可以访问目标的所有相关基本工具包,但错误仍然存在。在这一点上,问题似乎与詹金斯管道的工作方式与dita ot本身相对的方式有关吗?

我假设您使用自定义插件,如果是,请确保,您在 plugin.xml 中正确定义了罐子> SO:

<feature extension="dita.conductor.lib.import" file="lib/my.jar"/>

update

java.lang.ClassNotFoundException: org.dita.dost.module.GenMapAndTopicListModule

此错误意味着,在您的类路径上找不到主要的dita-ot jar。因此,这表明这不是插件问题。

通常您不必设置classpath,蚂蚁为您做到这一点。请阅读创建蚂蚁构建脚本。

请尝试这样的片段:

node {
    try {
        checkout scm
        stage('Build') {
            sh '''
                dir=$(pwd)
                curl [your-dita-ot-url] --output dita-ot.zip
                unzip -qq "$dir/dita-ot.zip"
                rm dita-ot.zip
                chmod +x ${WORKSPACE}/dita-ot/bin/ant
                ${WORKSPACE}/dita-ot/bin/ant -f ${WORKSPACE}/build.xml -Ddita.dir=$dir/dita-ot -Dbranch.name=$BRANCH_NAME
            '''
        }
    } catch (e) {
        currentBuild.result = "FAILED"
        throw e
    } finally {
        notifyBuild(currentBuild.result)
    }
}

相关内容

  • 没有找到相关文章

最新更新