插件找不到Jenkins静态资源
这个插件需要读取xml数据存储并解析其中的某些元素插件找不到Jenkins静态资源,jenkins,jenkins-plugins,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"); } Docume
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,尽管该文件在上可用,并且该文件直接在src/main/webapp文件夹下本地可用
我试图按照KK的建议来处理Jenkins静态资源,如下所述:
通过file.toString()检查文件路径后,我得到/static/4874107b/plugin/company deploy jenkins plugin/release.xml
对对象文档执行任何操作都会返回一个带有消息的空指针异常(没有这样的文件或目录)
有什么想法吗?你可以试试这个:
Jenkins.getInstance().getPlugin("plugin-name").getWrapper().baseResourceURL.getFile()
-->这将返回/src/main/webapp位置
从这个位置,您将能够找到您的文件 您可以使用
jenkins.model.jenkins
来帮助您:
import jenkins.model.Jenkins;
...
String releaseXmlUrl = Jenkins.getInstance().getRootUrl() + "plugin/company-deploy-jenkins-plugin/release.xml";
或者,如果您试图从插件中的某个位置执行此操作,您可以使此操作对插件短名称的更改更具弹性,例如:
import jenkins.model.Jenkins;
...
String releaseXmlUrl = Jenkins.getInstance().getRootUrl() + "plugin/" + getPlugin().getShortName() + "/release.xml";
首先,检查
file.toString()
生成的内容,并验证它是否有意义,然后在进行时将其添加到问题中。复制粘贴到ls-l
shell命令(或其他任何命令)并查看打印的内容。我认为您还需要一些内容,例如Jenkins目录的位置……是的,当我硬编码文件系统上资源的路径时,它工作得很好/tools/jenkins/jenkins_home/plugins/company deploy jenkins plugin/release.xml。。。但是,我希望尽量避免硬编码,并利用Jenkins的缓存机制