Maven 仅在阴影 Jar 中包含依赖项
Maven Include Dependency in Shaded Jar Only
我想使用 maven shade 创建一个 shaded jar,但我也想只在 shaded jar 的情况下包含一个特殊的依赖项(不在我的项目的正常编译依赖项中)。我该怎么做?
据我了解,includes/excludes 只是 whitelists/blacklists,因此我无法明确强制包含实际依赖项列表中未包含的内容。
对于更多上下文,我有一个 JAR 依赖项,其中包含我只想包含在我的一个阴影工件中的资源,但如果将该 jar 放在类路径中,否则会导致错误。
明确地说,我希望在一个 mvn package
调用中同时生成一个带有附加依赖项的阴影 jar 和一个没有它的普通 jar。
尝试使用配置文件,并仅在该配置文件中使用您的依赖项和阴影。例如:
<profiles>
<profile>
<id>shadeProfile</id>
<dependencies>
<dependency>
<groupId>com.example</groupId>
<artifactId>some-artifact</artifactId>
<version>1.23</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.3</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<shadedClassifierName>shaded</shadedClassifierName>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
现在,当您 运行 mvn -PshadeProfile package
时,它会将工件作为着色构建的一部分,并将分类器 shaded
用于新工件。通过这种方式,您的构建可以生成没有问题资源的未着色 JAR,以及带有该资源的着色 JAR,只需打开配置文件即可。
依赖于此的其他项目可以视情况依赖于着色或未着色工件,因为您正在使用分类器生成两者。
我想使用 maven shade 创建一个 shaded jar,但我也想只在 shaded jar 的情况下包含一个特殊的依赖项(不在我的项目的正常编译依赖项中)。我该怎么做?
据我了解,includes/excludes 只是 whitelists/blacklists,因此我无法明确强制包含实际依赖项列表中未包含的内容。
对于更多上下文,我有一个 JAR 依赖项,其中包含我只想包含在我的一个阴影工件中的资源,但如果将该 jar 放在类路径中,否则会导致错误。
明确地说,我希望在一个 mvn package
调用中同时生成一个带有附加依赖项的阴影 jar 和一个没有它的普通 jar。
尝试使用配置文件,并仅在该配置文件中使用您的依赖项和阴影。例如:
<profiles>
<profile>
<id>shadeProfile</id>
<dependencies>
<dependency>
<groupId>com.example</groupId>
<artifactId>some-artifact</artifactId>
<version>1.23</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.3</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<shadedClassifierName>shaded</shadedClassifierName>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
现在,当您 运行 mvn -PshadeProfile package
时,它会将工件作为着色构建的一部分,并将分类器 shaded
用于新工件。通过这种方式,您的构建可以生成没有问题资源的未着色 JAR,以及带有该资源的着色 JAR,只需打开配置文件即可。
依赖于此的其他项目可以视情况依赖于着色或未着色工件,因为您正在使用分类器生成两者。