2015-03-13 84 views
0

這個插件需要讀取XML數據存儲和分析它的某些元素插件無法找到詹金斯靜態資源

File file = new File(Functions.getResourcePath()+"/plugin/company-deploy-jenkins-plugin/release.xml"); 
    boolean fileExists = file.exists(); 
    if (fileExists) { 
     LOGGER.info("Found the file"); 
    } 
    Document document = builder.parse(new FileInputStream(file)); 

不過,我似乎無法能夠訪問該文件。如果(fileExists)的計算結果爲false,但該文件在http://%JenkinsHost%:%Port%/plugin/company-deploy-jenkins-plugin/release.xml處可用,並且該文件在本地直接位於src/main/webapp文件夾下。

我想按照KK關於處理Jenkins靜態資源的建議,如下所述:http://jenkins-ci.361315.n4.nabble.com/ANN-Referring-to-static-resources-from-your-plugin-td4490655.html

通過file.toString()檢查文件路徑後,我得到/static/4874107b/plugin/company-deploy-jenkins-plugin/release.xml。

在對象文檔上做任何工作都會返回一個帶消息的空指針異常(沒有這樣的文件或目錄)。

任何想法?

+0

首先,請檢查'file.toString()產生的內容,並驗證它是否有意義,並在問題中添加該內容。 – hyde 2015-03-13 19:40:36

+0

在file.toString() – fmanaa 2015-03-13 20:13:03

+0

增加了信息那麼,這是一個絕對路徑。複製粘貼到'ls -l' shell命令(或其他)並查看打印內容。 – hyde 2015-03-13 20:34:03

回答

1

你可以試試這個:

Jenkins.getInstance().getPlugin("plugin-name").getWrapper().baseResourceURL.getFile() 

- >這將返回/ src目錄/主/ web應用程序的位置

從這個位置,你就能找到你的文件。

0

您可以使用jenkins.model.Jenkins爲您提供幫助:

import jenkins.model.Jenkins; 
... 
String releaseXmlUrl = Jenkins.getInstance().getRootUrl() + "plugin/company-deploy-jenkins-plugin/release.xml"; 

或者,如果你嘗試這種在您的插件中Descriptor,可以讓這個更適應在你的插件一樣的短名稱更改所以:

import jenkins.model.Jenkins; 
... 
String releaseXmlUrl = Jenkins.getInstance().getRootUrl() + "plugin/" + getPlugin().getShortName() + "/release.xml";