SpringBoot多环境分离resources和lib进行打包
2020-03-31 16:05:24来源:博客园 阅读 ()
SpringBoot多环境分离resources和lib进行打包
为了更便捷的在本地进行开发,偶尔的又会涉及到测试和生产打包,每个环境下的配置不尽相同,需要配置多环境的配置文件,避免打包时还要自己特意去修改配置文件
SpringBoot项目的默认配置文件在main/resources下的application.properties且通过配置项 spring.profiles.active 来设置多环境属性,所以可以就此文件创建多个环境的application.properties,只是spring.profiles.active区分开特定的环境值,再通过maven进行配置打包
首先创建各环境下的配置文件,目录是这样
dev为开发环境,spring.profiles.active=dev
test为测试环境,spring.profiles.active=test
prod为生产环境,spring.profiles.active=prod
pom.xml文件添加
<profiles> <!-- 开发环境 --> <profile> <id>dev</id> <properties> <package.environment>dev</package.environment> </properties> <activation> <activeByDefault>true</activeByDefault> </activation> </profile> <!-- 测试环境 --> <profile> <id>test</id> <properties> <package.environment>test</package.environment> </properties> </profile> <!-- 生产环境 --> <profile> <id>prod</id> <properties> <package.environment>prod</package.environment> </properties> </profile> </profiles>
拆分resources、lib打包zip文件
<build> <resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> <excludes> <exclude>dev/*</exclude> <exclude>test/*</exclude> <exclude>prod/*</exclude> </excludes> </resource> <resource> <directory>src/main/resources/${package.environment}</directory> </resource> </resources> <plugins> <!-- 分离lib --> <plugin> <!--把依赖的jar包复制出来放到编译后的target/lib目录,并且在打包时候排除内部依赖--> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <executions> <execution> <id>copy-dependencies</id> <phase>prepare-package</phase> <goals> <goal>copy-dependencies</goal> </goals> <configuration> <outputDirectory>${project.build.directory}/lib</outputDirectory> <overWriteReleases>false</overWriteReleases> <overWriteSnapshots>false</overWriteSnapshots> <overWriteIfNewer>true</overWriteIfNewer> </configuration> </execution> </executions> </plugin> <!-- 分离资源文件 --> <plugin> <artifactId>maven-resources-plugin</artifactId> <executions> <execution> <id>copy-resources</id> <phase>package</phase> <goals> <goal>copy-resources</goal> </goals> <configuration> <resources> <resource> <directory>src/main/resources</directory> </resource> </resources> <outputDirectory>${project.build.directory}/resources</outputDirectory> </configuration> </execution> </executions> </plugin> <!--打包jar--> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <configuration> <archive> <!-- 指定资源文件目录,与打包的jar文件同级目录 --> <manifestEntries> <Class-Path>resources/</Class-Path> </manifestEntries> <manifest> <addClasspath>true</addClasspath> <classpathPrefix>lib/</classpathPrefix> <mainClass>com.schy.transfer.api.ApiApplication</mainClass> </manifest> </archive> <!-- 打包时忽略的文件(也就是不打进jar包里的文件),本例将resources下的.yml、.properties文件全部排除 --> <excludes> <exclude>**/*.xml</exclude> <exclude>**/*.properties</exclude> </excludes> </configuration> </plugin> <!-- spring boot repackage --> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>2.0.1.RELEASE</version> <configuration> <layout>ZIP</layout> <includes> <include> <groupId>non-exists</groupId> <artifactId>non-exists</artifactId> </include> </includes> </configuration> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> <!--打包为压缩文件--> <plugin> <artifactId>maven-assembly-plugin</artifactId> <executions> <execution> <phase>package</phase> <goals> <goal>single</goal> </goals> <configuration> <finalName>${project.artifactId}-${project.version}-${package.environment}</finalName> <appendAssemblyId>false</appendAssemblyId> <descriptors> <descriptor>src/assembly/assembly.xml</descriptor> </descriptors> </configuration> </execution> </executions> </plugin> </plugins> </build>View Code
assembly插件配置
<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3 http://maven.apache.org/xsd/assembly-1.1.3.xsd"> <id>transfer-api-assembly</id> <formats> <format>zip</format> </formats> <includeBaseDirectory>false</includeBaseDirectory> <fileSets> <fileSet> <directory>target/classes</directory> <outputDirectory>/resources</outputDirectory> <includes> <include>*.properties</include> <include>*.xml</include> </includes> <fileMode>0755</fileMode> </fileSet> <fileSet> <directory>target/lib</directory> <outputDirectory>/lib</outputDirectory> <excludes> <exclude>${project.groupId}:${project.artifactId}</exclude> </excludes> <fileMode>0755</fileMode> </fileSet> <fileSet> <directory>target</directory> <outputDirectory>/</outputDirectory> <includes> <include>${project.artifactId}-*.jar</include> </includes> <fileMode>0755</fileMode> </fileSet> </fileSets> </assembly>View Code
最后使用命令给开发环境进行打包
mvn clean install -Dmaven.test.skip=true -Pdev
打包的文件结构为
使用 java -jar test-1.0.jar 运行即可
原文链接:https://www.cnblogs.com/cnsevennight/p/12600316.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:项目结构介绍
下一篇:关于ssm整合shiro框架
- springboot2配置JavaMelody与springMVC配置JavaMelody 2020-06-11
- java学习之第一天 2020-06-11
- 数据源管理 | Kafka集群环境搭建,消息存储机制详解 2020-06-11
- SpringBoot 2.3 整合最新版 ShardingJdbc + Druid + MyBatis 2020-06-11
- 掌握SpringBoot-2.3的容器探针:实战篇 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash