打包
配置文件和class文件默认会被打包到一起,虽然可使用解压工具打开jar包,然后修改jar文件,但是这样几乎失去了配置文件的作用。
因此最好是将配置文件和jar包分目录保存,修改配置文件的时候也可以方便。
微信公众号:大数据报文
<!--配置文件打包到/conf目录下-->
<plugins>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<executions>
<execution>
<id>copy-resources</id>
<phase>validate</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/conf</outputDirectory>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
<!--将jar包数据到指定路径下并忽略配置文件-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<!-- 指定打包的jar包输出路径-->
<outputDirectory>
${project.build.directory}/lib
</outputDirectory>
<!--不打入jar包的文件类型或者路径-->
<excludes>
<exclude>**/*.properties</exclude>
<exclude>**/*.xml</exclude>
<exclude>**/*.yml</exclude>
<exclude>static/**</exclude>
<exclude>templates/**</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
代码中使用配置文件
如何去引用配置文件,根据配置文件类型的不同,代码的不同等有多种方式,这里只举一例子。
假设项目部署的根路径为:/opt/shopping。根据上面打包时候的配置jar包应该放在/opt/shopping/lib目录下,而配置文件在/opt/shopping/conf目录下。Java代码可以这样写
String root = "/opt/shopping"
InputStream resourceAsStream = new FileInputStream(root+"/conf/setting.properties");
Properties properties = new Properties();
properties.load(resourceAsStream);
properties.getProperty("mysql.driver");
//.....