如何在Jenkins插件中加载资源文件?

3
我正在尝试加载一个位于Jenkins插件的src/main/resources文件夹中的资源文件。但是它总是给我一个FileNotFoundException异常。请问有人能解释一下如何让它工作吗?
异常信息:
java.io.FileNotFoundException: file:/var/lib/jenkins/plugins/Report/WEB -INF/lib/Report.jar!/properties.txt (No such file or directory)

你是如何访问资源的?我猜你是通过 File(...) 访问的?如果是这样,那就错了。你必须使用 getClass().getResourcesAsStream("/...") 来代替。 - khmarbaise
我正在使用getClass().getResourcesAsStream("/...")来执行,但仍然出现异常。 - pavan
1个回答

0

这个问题早就被问过了,但我想分享我的答案,以防有人遇到类似于我遇到的问题。

按照以下步骤操作:在我的情况下有效:

  • 将您的文件放置在“resources”文件夹中,通常位于路径“src/main/resources”上。在IntelliJ IDE中,将资源目录标记为“resource root”。
  • 由于文件位于资源内部,因此它们位于构建路径上的一个目录中,因此Maven应该能够在不设置其他构建路径的情况下加载它们。
  • 假设文件名为“application-env.properties”。以下代码块应该在Jenkins插件运行时从资源文件夹中提取文件。

        InputStream inputStream = null;
        try{
          String resourceName = "application-env.properties";
          Properties props = new Properties();
          ClassLoader cl = <NameOfThisClass>.class.getClassLoader();
          try (InputStream stream = cl.getResourceAsStream(resourceName)) {
            props.load(stream);
          }
          //read props or return the same to the caller
        } 
        finally {
          if (inputStream != null) {
            inputStream.close();
          }
        }        
    

  • 网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接