簡體   English   中英

插件中的Jenkins FileSystem是什么?

[英]What is the Jenkins FileSystem in a plugin?

我有一個可以通過測試的類,如果我在Jenkins之外的另一個Java類中調用它,則可以運行。 它的構造函數具有以下內容:

this.fs = FileSystems.getDefault();

稍后在執行過程中,我在看到空指針異常后添加了完整性檢查。

if (this.fs == null) {
  throw new Exception("No FileSystem found");
}

因此,當此插件在Jenkins中運行時,默認的FileSystemnull並拋出該異常。 我的原始代碼使用Paths.get但是我將其切換為this.fs.getPath(stringPath); 所以我可以用DI來創建一個FileSystem單元測試。

在重構之前使用Paths.get可以正常工作,但是我不確定使用該方法如何知道正確的FileSystem ,尤其是考慮到在此環境中似乎未設置默認值,尤其如此。

從來沒有聽說過這樣的問題。 聽起來您的環境已經嚴重破壞,因為這是由Java平台定義的。 嘗試平分秋千-逐步刪除插件中不重要的部分,直到找出導致問題的原因。

使用System.out ,我意識到構造函數無法在插件更新上運行。 保存作業配置時,它會運行。 因此,當我保存作業配置時,這通過副作用解決了我的問題。 我最初沒有設置this.fs ,因此更新插件不會運行這些新行。 因此,我不應該將不會用於配置的東西放到構造函數中。 在事后看來,這是有道理的,因為它實際上是一個@DataBoundConstructor ,它暗示它正被用於config中的數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM