2017-10-10 18 views
1

私は初心者ですので、これが可能かどうかはわかりません。私は輸入のようなものが必要ですが、それほど必要ではありません。ここで私は何をしようとしているの単純化されたコードの例である:私は別のGroovyファイルのクラスをJenkinsパイプラインスクリプトの型として使用する

class FileToProcess implements Serializable { 
    String FileName 

    FileToProcess(fileName) { 
    this.FileName = fileName; 
    } 
} 

を持っているし、その後JenkinsFileに、私は

F1 = new FileToProcess('A'); 
List<FileToProcess> allFiles = new ArrayList<FileToProcess>(); 
allFiles.add(F1); 
​for (FileToProcess file : allFiles) { 
    System.out.println(file.FileName); 
} 
のような何かをしたいファイルFileToProcess.groovyで

今、私はStackOverflowで、例えばhereまたはhereのように、クラスを別のファイルからインスタンス化する方法の例を見つけました。その行を解決します。

F1 = new FileToProcess('A'); 

が、それは宣言で型としてそのクラスを使用する方法を示していないが、例えば

List<FileToProcess> allFiles = new ArrayList<FileToProcess>(); 

は私に「クラスFileToProcessを解決することができません」を与えます。私はまた、同じJenkinsFileにクラスを置くときにそうするので、このような型としてクラスを使うことはうまくいくはずなので、問題はJenkinsFileでクラスが見えないことだけであるように思えます。

これを行う方法はありますか?

答えて

0

私は、セットアップにあなたのクラスライブラリを試したかどうかはわかりませんが、私は違っそれを少しやったのパイプライン共有ライブラリからクラスを使用している間、私は同じことを試みたし、意図したとおり、それは https://jenkins.io/doc/book/pipeline/shared-libraries/

を働きました: 私はちょうど同じフォルダに、JenkinsFileの隣にGroovyのファイルを持っている、あなたはsrc/org/Foo.groovy

import org.Foo 

def list = new ArrayList<Foo> 
list.add(new Foo('str1')) 
list.add(new Foo('str2')) 
+0

まあ下のファイルを置くと仮定すると、それらはジェンキンスによってはgitから引っ張られます。私は共有ライブラリを使用しませんでした。これが唯一の方法ですか?私はロードを使用することも、ファイルから直接インポートすることもできないのですか? –

+0

私は今までに個人的にパイプラインライブラリオプションのみを使用しました。いずれにしても、そのコードをそのように管理する方が少し良いと思う – Kelrak

関連する問題