2015-03-13 79 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";