2017-09-06 13 views
0

私は基本的にJenkins pipelineをまとめました。それは私が大部分を期待していることです。Jenkinsパイプラインでjarファイルを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にあるdost.jarへのアクセス権を持っています。私はこの引数を、とりわけdost.jarを参照する(私は数多くのjarファイルがありますが)同じエラーで失敗するたびに数多くの方法を定義しようとしました。

私がJenkinsでスタンドアローンのAntプロジェクトをまとめたとき、antは上記の引数でjarファイルにアクセスする上で問題はありません。この引数/依存関係をパイプラインに供給するためのよりよい方法がありますか?

UPDATE: 私は私のビルドスクリプトにクラスパスのためのecho文を追加し、ビルドスクリプトでクラスパスにjarファイルを追加すると、実際の作業ではないことを確認することができました。したがって、すべての目的と目的のために、アリはターゲットのすべての関連する基本ツールキットjarにアクセスできますが、エラーはそのままです。この時点で、この問題は、ジェンキンパイプラインがどのように機能するのかとは関係がありますか?

+0

理由だけではなく、Antスクリプト自体内のlibの場所を定義していませんか? – CAustin

+0

私はそれを試みたが、うまくいかなかった。間違いなく、ユーザーエラーがあります。私はあなたが正しいと思う。それは完全に実行可能なオプションでなければなりません。私はさらに探検する。 –

答えて

0

私はそうならば、確認してください、あなたは正しくそうのようなplugin.xmlのであなたのjarファイルを定義し、カスタムプラグインを使用すると仮定します。

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

UPDATE

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

このエラーは、メインのDITA-OT jarがクラスパス上に見つからないことを意味します。これは、これはプラグインの問題ではないことを示しています。

通常、クラスパスを設定する必要はありません。Antはこれを行います。 Creating an Ant build scriptもお読みください。

この1のようなスニペットを試してください:

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) 
    } 
} 
+0

もう少し詳細を追加しました。基本的に、パイプラインはdost.jarにアクセスできないため、失敗しています。だから、それはプラグインの問題ではありません。 –

+0

提案していただきありがとうございます。私は実際にターゲットのクラスパスにあるものをプリントアウトしていました。すべての関連するジャーがそこにあります。だから、おそらくジェンキンのパイプラインが別の作業空間に構築しようとしていて、ジャーへのパスを壊しているのだろうかと思います。 –

関連する問題