基于assembly插件打带相关依赖的jar包
官方网站:https://maven.apache.org/plugins/maven-assembly-plugin/assembly.html
背景:最近开发一个sdk,mvn clean install
然后就挂资源池让客户下载jar使用了。
但是客户未mvn install:install-file
对sdk进行安装,而是直接用以下方式引入依赖。
<dependency>
<groupId>io.xxx.xxx</groupId>
<artifactId>xxx-xxx-sdk</artifactId>
<scope>system</scope>
<version>1.0.0</version>
<systemPath>${project.basedir}/lib/xxx-1.0.0-lib.jar</systemPath>
</dependency>
问题来了,以上引入依赖方式,SDK相关依赖如fastjson客户是未引入的,报了一堆红,相关参数没有。
反馈到我这边,是打包未将sdk相关依赖打入jar包。安排:
pom引入assembly插件
版本要求参考:https://maven.apache.org/plugins/maven-assembly-plugin/plugin-info.html
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.3.0</version>
<configuration>
<finalName>${project.artifactId}-${project.version}</finalName>
<appendAssemblyId>true</appendAssemblyId>
<descriptors>
<!--步骤二配置assembly.xml-->
<descriptor>src/main/assembly/assembly.xml</descriptor>
</descriptors>
<outputDirectory>${project.build.directory}</outputDirectory>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</pluginManagement>
</build>
配置assembly.xml
<assembly xmlns="http://maven.apache.org/ASSEMBLY/2.1.1"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.1.1 http://maven.apache.org/xsd/assembly-2.1.1.xsd">
<id>lib</id>
<formats>
<format>jar</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<dependencySets>
<dependencySet>
<outputDirectory>/</outputDirectory>
<useProjectArtifact>true</useProjectArtifact>
<unpack>true</unpack>
</dependencySet>
</dependencySets>
</assembly>
打包
mvn clean compile assembly:single