一、pom.xml配置如下
<!-- 设置环境 -->
<profiles>
<profile>
<!-- 本地开发环境 -->
<id>dev</id>
<properties>
<profiles.active>dev</profiles.active>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<!-- 测试环境 -->
<id>test</id>
<properties>
<profiles.active>test</profiles.active>
</properties>
</profile>
<profile>
<!-- 生产环境 -->
<id>prod</id>
<properties>
<profiles.active>prod</profiles.active>
</properties>
</profile>
</profiles>
<build>
<finalName>uoamp-notify</finalName>
<!-- 打包时会将配置文件加入到classpath中,但是本地启动时,需要动态设置的配置文件由于在resource下多了一级目录(dev|test|prod),导致程序中无法直接根据classpath:/获取到文件 -->
<!-- 利用<resources>配置将指定目录下的文件compile时也编译到target/classes/中,classes在classpath中 -->
<resources>
<resource>
<directory>src/main/resources/${profiles.active}</directory>
</resource>
</resources>
<plugins>
<!-- 将依赖包打到lib文件夹下,供assembly插件使用,要在assemly插件之前,否则依赖包无法被assembly提取 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>3.1.1</version>
<configuration>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
<excludeTransitive>false</excludeTransitive> <!-- 表示是否不包含间接依赖的包 -->
<stripVersion>false</stripVersion> <!-- 去除版本信息 -->
</configuration>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<!-- 拷贝项目依赖包到lib/目录下 -->
<outputDirectory>${project.build.directory}/lib</outputDirectory>
<excludeTransitive>false</excludeTransitive>
<stripVersion>false</stripVersion>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<!-- 根据package.xml文件将jar包、依赖包和配置文件提取出来 -->
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<appendAssemblyId>false</appendAssemblyId>
<descriptors>
<descriptor>src/main/resources/assembly/package.xml</descriptor>
</descriptors>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<!-- 配置classpath,依赖的包:lib 配置文件:config -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.0.2</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass><!-- 填写实际启动类 --></mainClass>
<classpathPrefix>lib/</classpathPrefix>
</manifest>
<manifestEntries>
<url>${project.url}</url>
<build-time>${maven.build.timestamp}</build-time>
<Class-Path>./lib/ ./config/</Class-Path>
</manifestEntries>
</archive>
</configuration>
</plugin>
</plugins>
</build>
二、assembly插件的配置文件package.xml(名称可指定)
<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
<id>package</id>
<formats>
<format>zip</format>
</formats>
<includeBaseDirectory>true</includeBaseDirectory>
<baseDirectory>uoamp-notify</baseDirectory>
<fileSets>
<!-- 公共配置 -->
<fileSet>
<directory>src/main/resources</directory>
<includes>
<include>log4j.xml</include>
</includes>
<outputDirectory>config</outputDirectory>
</fileSet>
<!-- 需要profile指定环境的配置 -->
<fileSet>
<directory>src/main/resources/${profiles.active}</directory>
<includes>
<include>uoamp-notify.properties</include>
</includes>
<outputDirectory>config</outputDirectory>
</fileSet>
<!-- 启动脚本 -->
<fileSet>
<directory>${project.basedir}</directory>
<outputDirectory>/</outputDirectory>
<includes>
<include>*.sh</include>
</includes>
</fileSet>
<!-- jar包以及依赖包,lib中的依赖bao来自maven-dependency-plugin插件 -->
<fileSet>
<directory>${project.build.directory}</directory>
<includes>
<include>lib/*.jar</include>
<include>*.jar</include>
</includes>
<outputDirectory>/</outputDirectory>
</fileSet>
</fileSets>
</assembly>