1、相关插件
maven-jar-plugin
单独将工程单独打包成单独的 jar 利于维护,根据需求将相应的配置文件和资源纳入或排除打包范围,便于资源维护
maven-dependency-plugin
单独下载依赖包便于发布维护
maven-assembly-plugin
归档打包发布
2、打包目录规划
-app
|-bin 运维脚本存放目录
|-config 配置等资源文件存放目录
|-lib jar包存放目录
3、pom.xml插件配置
<plugins>
<!-- 如果是spring boot项目的话 去除掉 spring boot 打包集成的插件 不完全打成一个独立的jar 便于对资源文件的管理和维护-->
<!--<plugin>-->
<!--<groupId>org.springframework.boot</groupId>-->
<!--<artifactId>spring-boot-maven-plugin</artifactId>-->
<!--</plugin>-->
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<id>make</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<finalName>appDemo</finalName>
<descriptors>
<descriptor>src/assembly/app.xml</descriptor>
</descriptors>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<!-- need at least 2.6 for useBaseVersion-->
<version>2.8</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>prepare-package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
</execution>
</executions>
<configuration>
<includeTypes>jar</includeTypes>
<overWriteSnapshots>true</overWriteSnapshots>
<type>jar</type>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
<!-- useBaseVersion=false makes the jar names match those
that maven-jar-plugin puts in the manifest classpath -->
<useBaseVersion>false</useBaseVersion>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<configuration>
<classesDirectory>${project.build.outputDirectory}</classesDirectory>
<excludes>
<exclude>**/*.jar</exclude>
<exclude>**/*.properties</exclude>
<exclude>**/*.xml</exclude>
<exclude>**/*.js</exclude>
<exclude>**/*.html</exclude>
</excludes>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix></classpathPrefix>
<mainClass>cn.coremail.App</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
- app.xml
<assembly>
<id>app</id>
<formats>
<format>tar.gz</format>
</formats>
<includeSiteDirectory>false</includeSiteDirectory>
<fileSets>
<fileSet>
<includes>
<include>README.md</include>
</includes>
</fileSet>
<fileSet>
<directory>src/bin</directory>
<outputDirectory>/bin</outputDirectory>
<includes>
<include>*</include>
</includes>
</fileSet>
<fileSet>
<directory>target</directory>
<outputDirectory></outputDirectory>
<includes>
<include>lib/**/*.jar</include>
</includes>
</fileSet>
<fileSet>
<directory>target</directory>
<outputDirectory>/lib</outputDirectory>
<includes>
<include>*.jar</include>
</includes>
</fileSet>
<fileSet>
<directory>target/classes</directory>
<outputDirectory>/config</outputDirectory>
<includes>
<include>*.xml</include>
<include>*.properties</include>
<include>**/*.xml</include>
<include>**/*.properties</include>
<include>static/**/*.*</include>
<include>templates/**/*.*</include>
</includes>
</fileSet>
</fileSets>
</assembly>
4、执行打包命令,即可打包成功准备发布了
mvn package -PmakeAll -Dmaven.test.skip=true