感谢@payyouyont博主对本篇文章的支持,参考地址
https://blog.csdn.net/pei19890521/article/details/80984707
在pom文件中添加下面的配置
src/main/java
com/zzzy/zc/mapper/*.xml
src/main/resources
**/*.*
ZoomSealLite
org.apache.maven.plugins
maven-resources-plugin
UTF-8
org.apache.maven.plugins
maven-compiler-plugin
1.7
UTF-8
org.springframework.boot
spring-boot-maven-plugin
true
true
然后直接双击idea的package即可,或者cd到项目根目录运行mvn clean package.
如果不想打包test代码,运行mvn clean package -Dmaven.test.skip=true
一般的需求是想动态修改数据库配置文件,所以我这里做的是将jdbc.properties配置文件分离出来,项目结构如下
向pom文件中添加assembly插件配置
org.apache.maven.plugins
maven-jar-plugin
true
com.zzzy.zc.Application
org.apache.maven.plugins
maven-assembly-plugin
src/main/resources/config/package.xml
make-assembly
package
single
在config文件夹下新建package.xml文件
package
zip
true
target
/
*.jar
src/main/resources
/
config/jdbc.properties
application.properties
此时已经可以将配置文件分离出来进行打包了,此时如果用maven的mvn clean package命令打出来的包虽然有xxx.zip包,但是是不能用的.必须先用mvn clean package将可执行jar打出来,然后用mvn assembly:single命令打zip包
zip结构如下
现在将打的zip包解压出来,已经能运行了,
cd到jar所在的文件夹,执行Java -jar xxxx.jar
但是此时不会读取分离出来的配置文件 依然是读取jar包中存在的配置文件
此时执行java -jar -Dspring.config.location=%cd%\application.properties -Dlogging.path=%cd%\log %cd%\xxx.jar即可读取外部配置文件
此时读取的application.properties是外置的配置 但是jdbc.properties仍然是jar包中内置的 所以还需要做一些工作
在application.properties中添加一个字段 config.path=D:\\config\\jdbc.properties (zip解压到的路径)
然后创建DataSource时读取它
@SpringBootConfiguration
@PropertySource(value = { "classpath:config/jdbc.properties",
"file:${config.path}" }, ignoreResourceNotFound = true,
encoding = "utf-8")
public class DatasourceConfig {
@Bean(name = "dataSource")
@Qualifier(value = "dataSource")
@Primary
@ConfigurationProperties(prefix = "c3p0")
public DataSource dataSource() {
return DataSourceBuilder.create().type(com.mchange.v2.c3p0.ComboPooledDataSource.class).build();
}
}
jdbc.properties配置如下
c3p0.jdbcUrl=jdbc:mysql://localhost:3306/test
c3p0.user=root
c3p0.password=123456
c3p0.driverClass=com.mysql.jdbc.Driver
大功告成,现在先将项目clean一下(因为修改了类文件,如果不clean,每次打的zip包里用的还是旧的jar包)
然后执行package(现在打了最新的jar)
再运行mvn assembly:single将jar以及配置文件打到zip中
最后cd到jar所在文件夹 执行java -jar -Dspring.config.location=%cd%\application.properties -Dlogging.path=%cd%\log %cd%\xxx.jar