这个插件需要读取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。
对对象文档进行任何操作都会返回带有消息的空指针异常(没有这样的文件或目录)。
有什么想法吗?
答案 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";