如何把maven项目的一些文件打包成jar包, 提供给第三方使用,这里使用maven assembly, 参考配置assembly.
- add plugin in pom.xml
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.4</version>
<configuration>
<skipAssembly>${skipAssembly}</skipAssembly>
<descriptors>
<descriptor>src/main/assembly/assembly.xml</descriptor>
</descriptors>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
注意一点, 要指定assembly.xml
- add assembly.xml
<?xml version="1.0" encoding="UTF-8"?>
<assembly>
<id>{id}</id>
<formats>
<format>jar</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<dependencySets>
<dependencySet>
<outputDirectory>lib</outputDirectory>
<scope>unknown</scope>
<excludes>
<exclude>${groupId}:${artifactId}</exclude>
</excludes>
</dependencySet>
</dependencySets>
<fileSets>
<fileSet>
<outputDirectory>/</outputDirectory>
<directory>${project.build.outputDirectory}</directory>
<includes>
<include>a/b/**</include>
<include>a/c/**</include>
<include>a/cc.class</include>
</includes>
</fileSet>
</fileSets>
</assembly>
dependencySets, dependencySet: 设置需要依赖的包
outputDirectory: 打包以后依赖jar的目录
scope: 需要打包的依赖的scope,因为我这里不需要任何依赖,所以使用了一个不存在的.如果你要打包runtime的,就写<scope>runtime</scope>
excludes: 要排除哪些包,格式是 ${groupId}:${artifactId}
fileSets, fileSet: 设置需要打包的文件
outputDirectory: 打包以后文件的目录, 一般在根目录
directory: classes目录, 一般使用${project.build.outputDirectory}
includes: 要打包哪些文件,如果是目录,使用 a/b/** ,如果是文件, 就用 a/cc.class
- 打包
mvn -DskipAssembly=false -Dmaven.test.skip=true package