插件无法找到Jenkins静态资源

时间:2015-03-13 19:23:23

标签: jenkins jenkins-plugins

这个插件需要读取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));

但是,我似乎无法访问该文件。 if(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。

对对象文档进行任何操作都会返回带有消息的空指针异常(没有这样的文件或目录)。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

你可以试试这个:

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

- >这将返回/ src / main / webapp位置

从这个位置,您将能够找到您的文件。

答案 1 :(得分: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";