将springboot项目打成可执行的jar,并且分离出配置文件

感谢@payyouyont博主对本篇文章的支持,参考地址

https://blog.csdn.net/pei19890521/article/details/80984707

一.使用maven将springboot项目打成可执行的jar

在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
          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

将springboot项目打成可执行的jar,并且分离出配置文件_第1张图片 

二.打jar包并分离配置文件

一般的需求是想动态修改数据库配置文件,所以我这里做的是将jdbc.properties配置文件分离出来,项目结构如下

将springboot项目打成可执行的jar,并且分离出配置文件_第2张图片

向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包)

将springboot项目打成可执行的jar,并且分离出配置文件_第3张图片

然后执行package(现在打了最新的jar)

再运行mvn assembly:single将jar以及配置文件打到zip中

最后cd到jar所在文件夹   执行java -jar -Dspring.config.location=%cd%\application.properties -Dlogging.path=%cd%\log %cd%\xxx.jar

你可能感兴趣的:(框架)