maven打包经常使用到的插件
- 使用shade打包,这个插件会将所有依赖的包里的方法全部打进去,形成一个大的jar包,可以使用命令直接运行
命令: java -cp democlient-0.0.1-SNAPSHOT.jar com.Test
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>1.6</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<!--添加此过滤器,防止出现Invalid signature file digest for Manifest main attributes-->
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
</excludes>
</filter>
</filters>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>META-INF/spring.handlers</resource>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>META-INF/spring.schemas</resource>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
- 使用这个插件可以将依赖的jar拷贝到 lib目录文件夹下,比较推荐
命令:java -Djava.ext.dirs=./lib -cp original-democlient-0.0.1-SNAPSHOT.jar com.Test
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy</id>
<phase>install</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>
${project.build.directory}/lib
</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
3.编译时候会跳过test测试类
<plugin>
<!--编译时候跳过test-->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19</version>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
4.使用assembly插件打包,这个比较高端,可以自定义文件夹格式
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2.1</version>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
<configuration>
<finalName>zppostnumlimitask</finalName>
<descriptors>
<descriptor>src/main/assembly/assembly-online.xml</descriptor>
<!--<descriptor>src/main/assembly/assembly-offline.xml</descriptor>-->
</descriptors>
</configuration>
</plugin>
<assembly>
<id>online</id>
<formats>
<format>tar.gz</format>
</formats>
<dependencySets>
<dependencySet>
<useProjectArtifact>true</useProjectArtifact>
<outputDirectory>lib</outputDirectory>
<excludes>
<exclude>com.xxxxxxx:com.xxxxxxx</exclude>
</excludes>
</dependencySet>
<dependencySet>
<outputDirectory>/</outputDirectory>
<outputFileNameMapping>${artifact.name}.jar</outputFileNameMapping>
<includes>
<include>com.xxxxxxx:com.xxxxxxx</include>
</includes>
</dependencySet>
</dependencySets>
<fileSets>
<fileSet>
<outputDirectory>/</outputDirectory>
<directory>src/main/resources</directory>
<includes>
<include>**/*.*</include>
</includes>
</fileSet>
<fileSet>
<outputDirectory>/conf</outputDirectory>
<directory>conf</directory>
<includes>
<include>**/*.*</include>
</includes>
</fileSet>
<fileSet>
<outputDirectory>/</outputDirectory>
<directory>conf</directory>
<includes>
<include>log4j.properties</include>
</includes>
</fileSet>
</fileSets>
</assembly>