在使用spring boot开发的时候,会根据环境配置多个application.yml文件(dev,sit等到),在最后发布版本的时候不想把这些不用的配置文件打包到发布包中。在assembly插件的配置文件中也没有找到根据变量排除或加载指定文件的方法,于是就想到了配置多个assembly配置文件(每个配置文件根据环境排查不需要的配置文件),根据pom.xml中的profiles属性指定打包的assembly配置文件。具体的代码如下:
  pom.xml中profiles属性配置:
  	<profiles> 		<profile> 			<id>dev</id> 			<activation> 				<activeByDefault>true</activeByDefault> 			</activation> 			<properties> 				<profile.assembly.package.suffix>dev</profile.assembly.package.suffix> 			</properties> 		</profile> 		<profile> 			<id>sit</id> 			<properties> 				<profile.assembly.package.suffix>sit</profile.assembly.package.suffix> 			</properties> 		</profile> 	</profiles>
   
  pom.xml中assembly插件的配置: (最简化配置)
  			<plugin> 				<artifactId>maven-assembly-plugin</artifactId> 				<configuration> 					<appendAssemblyId>false</appendAssemblyId> 					<descriptors> 						<descriptor>src/assembly/package-${profile.assembly.package.suffix}.xml</descriptor> 					</descriptors> 					<finalName>${project.artifactId}-${project.version}</finalName> 				</configuration> 			</plugin> 
   
  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>customer</id> 	<formats> 		<format>tar.gz</format> 	</formats>  	<fileSets> 		<fileSet> 			<directory>sbin</directory> 			<outputDirectory>/sbin</outputDirectory> 			<useDefaultExcludes>true</useDefaultExcludes> 			<excludes> 				<exclude>mvn_*</exclude> 				<exclude>shutdown.sh</exclude> 				<exclude>startup.sh</exclude> 				<exclude>assembly*</exclude> 			</excludes> 		</fileSet> 		<fileSet> 			<directory>target/classes</directory> 			<outputDirectory>/classes</outputDirectory> 			<excludes> 				<exclude>/com/**/xx/**</exclude>  <!-- 排除某个目录下的所有文件 --> 				<exclude>/com/**/xxxx/**</exclude> 				<exclude>/com/**/xxxxxxx.class</exclude> <!-- 排除某个文件 --> 				<exclude>/static/**</exclude> 				<exclude>/templates/**</exclude> 			</excludes> 			<useDefaultExcludes>true</useDefaultExcludes> 		</fileSet> 		<fileSet> 			<directory>logs</directory> 			<outputDirectory>/logs</outputDirectory> 			<excludes> 				<exclude>/*.log</exclude> 				<exclude>/backup/*.log</exclude> 			</excludes> 			<useDefaultExcludes>true</useDefaultExcludes> 		</fileSet> 	</fileSets> 	<dependencySets> 		<dependencySet> 			<useProjectArtifact>false</useProjectArtifact> 			<outputDirectory>/lib</outputDirectory> 			<excludes> <!-- 排除不需要的依赖包 --> 				<exclude>org.springframework:spring-jdbc</exclude> 				<exclude>org.springframework.boot:spring-boot-starter-jdbc</exclude> 				<exclude>org.springframework.boot:spring-boot-starter-data-jpa</exclude> 				<exclude>org.springframework.boot:spring-boot-starter-redis</exclude> 				<exclude>org.springframework.data:spring-data-jpa</exclude> 				<exclude>org.hibernate.javax.persistence:hibernate-jpa-2.1-api</exclude> 			</excludes> 			<scope>runtime</scope> 		</dependencySet> 	</dependencySets> </assembly>