jar包读取外部配置文件 jar包读取外部配置文件无效
Spring Boot 外置配置文件
默认情况下,我们 spring boot 项目的配置文件
jar包读取外部配置文件 jar包读取外部配置文件无效
jar包读取外部配置文件 jar包读取外部配置文件无效
jar包读取外部配置文件 jar包读取外部配置文件无效
如果是要改配置文件中的配置项时,就需要将项目重新打包,在某些情况下,这就显得十分不方便。
对此,我们可以将 spring boot 项目的配置文件『挪到』jar 包之外,然后再启动 spring boot 项目时再指定它使用外部的这些配置文件。
根据上述的
这种情况下,在启动 spring boot 项目时,需要额外的参数( -Dspring.config.location )告诉它项目的配置文件在哪:
注意:
spring boot 默认是以 classpath:/,classpath:/config/,file:./,file:./config/ 这样的配置在查找、加载配置文件,有意思的是查找顺序是上述配置的反向顺序:
因此,如果你在 spring.config.location 中也定义了多个配置文件位置,例如: classpath:/custom-config/,file:./custom-config/ , 那么配置文件的查找、加载顺序同样是反向的:
另外,还有一个功能相似的配置 spring.config.additional-location ,使用它的话,它会作为默认配置路径的『 扩展配置 』路径来使用。扩展的配置路径会比默认的配置优先被扫描到. 比如说, 如果设置了扩展的配置文件所在路径为: classpath:/custom-config/,file:./custom-config/ , 那么查找路径将会是下面的顺序:
这种扫描顺序使得你可以通过自己的自定义配置来修改默认的配置项。
如何用men将配置文件打在jar包外
String s="";知道一点点,给个类似的例子:
举例:具体再去看看 dependency-plugin 的用法。
如何用men将配置文件打在jar包外
while((s=br.readLine())!=null)知道一点点,给个类似的例子: org.apache.men.plugins men-dependency-plugin copy-soming prepare-package copy-dependencies 要排除的groupids 要排除的artifactIds jar 指定输出的路径 具体再去看看 dependency-plugin 的用法。
如何用men将配置文件打在jar包外
}}compile
${project.build.directory}/lib
可以参考这个配置,使用men package 将在target下面生成jar包,lib是依赖库,配置文件放在和jar一个目录
Ja如何获取当前的jar包路径以及如何读取j
把配置文件ccc.xml放到编译路径,如src/com..aa下面,然后再根据
String rootPath=Xxxx.class.getResource("/").getPath();
获取到编译的根路径
SpringBoot配置文件存放位置以及读取顺序
1、配置文件不存在:需要确认配置文件是否存在,如果不存在,可以手动创建文件并将其放置在正确的目录下。默认情况下,我们可以将application.properties或者application.yaml(为了方便演示,本文以下均以application.properties介绍)放置在题主是否想问“men找不到jar包里的配置文件的原因”原因是:配置文件不存在、配置文件未正确打包、配置文件路径错误。如下四处:
1.1、idea中,为了我们本地方便开发测试,我们在此处创建一个config目录,然后把application.properties放进去,项目正常运行。
jar包会自动生成在target目录下。
我们将生成的jar包,出来,到另外文件夹进行运行,比如,我现在该jar包到test目录下,但是这个时候是起不来,因为没有配置文件,虽然我们在idea里面是有config目录的,但是它并不没有被打包进去。我们要把config目录也过来,跟该jar包放在同一个目录下。
在此处,我们可以使用ja -jar demo-0.01-SNAPSHOT来运行项目。
正常运行。
当我们将其打成jar包时,application.properties同样不会被打包进jar包中。需要另外出来和jar包放在才能正常运行。
以上两种方式来放置配置文件,如果不写开发,测试,和生产好几套环境配置文件的话,就可以直接打开配置文件,改成自己需要的配置即可。
以下两种方式是将该配置文件打包在jar包里面了,即便只改一个端口号,开发人员先改配置文件,再打包,再运行。此处也记录下,并解开jar包,看下该配置文件被打包后,放置的位置。
打包后,如下图,jar包再target里面,我们寻找下application.properties文件。为了方便演示,我们将target目录下的demo-0.0.1-SNAPSHOT.jar放到一个新目录给它解压开,找下该配置文件,我放置到了一个test目录下。
解压后:如下图,我们进入目录
发现config目录被放置在classes目录下。然后这也就让我们明白了,什么是classpath?classpath的路径到底指的是哪里,在idea中我们就把它放置在resource目录,该目录就是表示classpath。而被打成jar包后classes目录就是所谓的classpath。
所有的yaml文件,同理。
如何用men将配置文件打在jar包外
pom如下,mvn package -Dmen.test.skip=true结果在target下面有jar,lib是依赖库,配置文件放在和jar一个目录
compile
${project.build.directory}/lib
ja获取jar包中资源文件
在src目录下建议一个文件夹,专门存放配置文件,项目编译后,直接用jar命令打包即可。
如有疑问,可远程协助解决。
有问题欢迎提问,满意请采
求助:JAR包中的XML文件应该怎么读取。
//返回读取指定资源的输入流你没有说清楚。是另一个工程中的代码访问jar中的xml文件,还是jar本身的代码访问xml文件。
如果是前者应该是没有办法的。
如果是后者。
BufferedReader br = new BufferedReader(new InputStreamReader(
((YourClass.this.getClass().getResourceAsStream("1.xml")))));
String s;
while ((s = br.readLine()) != null)
System.out.println(s);
jar包中配置文件的路径
Propertiesprop=newProperties();prop.load(newFileInputStream("D://conf//a.properties"));
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系 836084111@qq.com 删除。