maven工程如何读取resource目录下配置文件

 更新时间:2021年11月19日 09:39:25   作者:追梦菜鸟  
这篇文章主要介绍了maven工程如何读取,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

maven工程读取resource目录下配置文件

在maven工程中,我们会将配置文件放到src/main/resources下面,例如

我们需要确认resource 下的文件编译之后存放的位置。

它编译的路径直接位于classes下面,这个路径其实就是classPath的路径,所以,在resources 根目录下的配置文件其实就是 classPath的路径。

public static void main(String[] args) throws ParserConfigurationException, Exception{  
        ClassLoader classLoader = TestDom.class.getClassLoader();  
        URL resource = classLoader.getResource("test.xml");  
        String path = resource.getPath();  
        System.out.println(path);  
        InputStream resourceAsStream = classLoader.getResourceAsStream("test.xml"); 

这样我们就可以直接拿到路径,调用 getResourceAsStream 方法 可以直接拿到目标文件的输入流。

几种读取配置文件的方式比较(代码在src/main/java目录下,资源文件在src/main/resources/目录下):

InputStream is = this.getClass().getResourceAsStream(test.xml);  //拿不到资源
InputStream is = this.getClass().getResourceAsStream("/" +test.xml); // 拿到资源
InputStream is = this.getClass().getClassLoader().getResourceAsStream(test.xml); //拿到资源
  • 第一种方式会从当前类的目录下去找,这个文件如果不和该类在一个目录下,就找不到。
  • 第二种方式会从编译后的整个classes目录下去找,maven也会把资源文件打包进classes文件夹,所以可以找到。
  • 第三种方式中ClassLoader就是从整个classes目录找的,所以前面无需再加/。

maven配置resource,多个source目录

默认情况下

<build> 
  <sourceDirectory>src/main/java</sourceDirectory>  
  <testSourceDirectory>src/test/java</testSourceDirectory>  
  <resources> 
    <resource> 
      <directory>src/main/resources</directory> 
    </resource> 
  </resources>  
  <testResources> 
    <testResource> 
      <directory>src/test/resources</directory> 
    </testResource> 
  </testResources> 
</build>

配置多个资源文件夹

<build> 
  <resources> 
    <resource> 
      <directory>src/main/resources</directory> 
    </resource>  
    <resource> 
      <directory>src/labs/resources</directory> 
    </resource> 
  </resources> 
</build>

使用eclipse要更新一下maven工程的配置。项目右键-》maven-》update project configuration

配置读取源文件夹里的资源文件

<build>
  <resources> 
    <resource> 
      <directory>src/main/resources</directory> 
    </resource>  
    <resource> 
      <directory>src/labs/resources</directory> 
    </resource>  
    <resource> 
      <directory>src/main/java</directory>  
      <includes> 
        <include>**/*.hbm.xml</include> 
      </includes> 
    </resource>  
    <resource> 
      <directory>src/labs/java</directory>  
      <includes> 
        <include>**/*.hbm.xml</include> 
      </includes> 
    </resource> 
  </resources>
</build>

配置多个源文件夹

<build>
  <plugins>... 
    <!-- build-helper-maven-plugin, 设置多个源文件夹 -->  
    <plugin> 
      <groupId>org.codehaus.mojo</groupId>  
      <artifactId>build-helper-maven-plugin</artifactId>  
      <version>1.4</version>  
      <executions> 
        <execution> 
          <id>add-source</id>  
          <phase>generate-sources</phase>  
          <goals> 
            <goal>add-source</goal> 
          </goals>  
          <configuration> 
            <sources> 
              <source>${basedir}/src/labs/java</source>  
              <!-- 我们可以通过在这里添加多个source节点,来添加任意多个源文件夹 --> 
            </sources> 
          </configuration> 
        </execution> 
      </executions> 
    </plugin>
  </plugins>
</build>

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java设计模式中的设计原则之合成复用原则详解

    Java设计模式中的设计原则之合成复用原则详解

    这篇文章主要介绍了Java设计模式中的设计原则之合成复用原则详解,原则是尽量使用合成/聚合的方式,而不是使用继承聚合关系表示的是整体和部分的关系,整体与部分可以分开,可以理解为成员变量和当前类的关系就是聚合关系,需要的朋友可以参考下
    2023-11-11
  • Java数据结构之快速幂的实现

    Java数据结构之快速幂的实现

    快速幂是用来解决求幂运算的高效方式。本文将详细为大家介绍如何利用Java实现快速幂,以及利用快速幂求解幂运算问题,需要的可以参考一下
    2022-03-03
  • Java设计模式之装饰模式详解

    Java设计模式之装饰模式详解

    这篇文章主要介绍了Java设计模式中的装饰者模式,装饰者模式即Decorator Pattern,装饰模式是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能,装饰模式又名包装模式。装饰器模式以对客户端透明的方式拓展对象的功能,是继承关系的一种替代方案
    2022-07-07
  • 浅谈@FeignClient中name和value属性的区别

    浅谈@FeignClient中name和value属性的区别

    这篇文章主要介绍了@FeignClient中name和value属性的区别,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • spring security自定义登录页面

    spring security自定义登录页面

    在项目中我们肯定不能使用Spring自己生成的登录页面,而要用我们自己的登录页面,下面通过本文给大家分享spring security自定义登录页面的实现方法,一起看看吧
    2017-09-09
  • 详解Java如何实现FP-Growth算法

    详解Java如何实现FP-Growth算法

    学校里的实验,要求实现FP-Growth算法.FP-Growth算法比Apriori算法快很多(但是却比不上时间)在网上搜索后发现Java实现的FP-Growth算法很少,且大多数不太能理解):太菜.所以就自己实现了一下.这篇文章重点介绍一下我的Java实现 ,需要的朋友可以参考下
    2021-06-06
  • 解决Java中的强制类型转换和二进制表示问题

    解决Java中的强制类型转换和二进制表示问题

    这篇文章主要介绍了解决Java中的强制类型转换和二进制表示问题,需要的朋友可以参考下
    2019-05-05
  • Java for循环详解

    Java for循环详解

    这篇文章主要介绍了Java for循环方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • Java 中普通代码块,构造代码块,静态代码块区别及代码示例

    Java 中普通代码块,构造代码块,静态代码块区别及代码示例

    这篇文章主要介绍了Java 中普通代码块,构造代码块,静态代码块区别及代码示例的相关资料,需要的朋友可以参考下
    2017-01-01
  • JPA延迟加载no Session报错解决分析

    JPA延迟加载no Session报错解决分析

    这篇文章主要为大家介绍了JPA延迟加载no Session报错解决分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-09-09

最新评论