如何使用maven shaded插件而不是两个创建一个包含所有依赖项的可执行jar
Posted
技术标签:
【中文标题】如何使用maven shaded插件而不是两个创建一个包含所有依赖项的可执行jar【英文标题】:How to create only one executable jar with all dependencies inside it using maven shaded plugin instead of two 【发布时间】:2016-12-06 04:28:28 【问题描述】:project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>SoclePDCFDR</groupId>
<artifactId>SoclePDCFDR</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependency>
<groupId>ojdbc</groupId>
<artifactId>ojdbc</artifactId>
<version>14</version>
<type>pom</type>
</dependency>
<build>
<!-- <sourceDirectory>src</sourceDirectory>
<resources>
<resource>
<directory>src</directory>
<excludes>
<exclude>**/*.java</exclude>
</excludes>
</resource>
</resources> -->
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.4.3</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<finalName>Test</finalName>
<shadedArtifactAttached>true</shadedArtifactAttached>
<shadedClassifierName>jar-with-dependencies</shadedClassifierName>
<transformers>
<transformer
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<manifestEntries>
<Main-Class>com.sfdr.ms.pdc.FilesManagementMain</Main-Class>
<Class-Path>.</Class-Path>
</manifestEntries>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
【问题讨论】:
【参考方案1】:请参考以下插件,
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>com.bitsWilp.BITSPilani</mainClass>
</manifest>
</archive>
<finalName>bitsWILP</finalName>
<appendAssemblyId>false</appendAssemblyId>
</configuration>
</plugin>
参考:https://github.com/ramasamykasiviswanathan/BITSWilpAPI/blob/newAPIimpl/pom.xml
我为一个捆绑了所有依赖项的 API 编写代码。
【讨论】:
对我来说它仍在创建两个罐子,以上是关于如何使用maven shaded插件而不是两个创建一个包含所有依赖项的可执行jar的主要内容,如果未能解决你的问题,请参考以下文章
maven 插件之间的区别 ( assembly-plugins , jar-plugins , shaded-plugins )