Java Maven包装了一些有阴影的罐子
我目前正在运行一个多模块maven项目,在每个模块中我都会生成一个着色jar。这些罐子是分开运行的,因为它们代表三种不同的Spark作业 然而,为了让“运送”它们更容易,我想把所有这些带阴影的罐子都拉上拉链。我已经尝试使用汇编插件来实现这一点,但我正在努力 当我尝试使用模块集时,它似乎只抓住了未着色的jar 我已经能够使用文件集实现这一点,但它不是很优雅,而且它不能处理我的开发和生产版本改变着色jar的命名这一事实Java Maven包装了一些有阴影的罐子,java,maven,zip,Java,Maven,Zip,我目前正在运行一个多模块maven项目,在每个模块中我都会生成一个着色jar。这些罐子是分开运行的,因为它们代表三种不同的Spark作业 然而,为了让“运送”它们更容易,我想把所有这些带阴影的罐子都拉上拉链。我已经尝试使用汇编插件来实现这一点,但我正在努力 当我尝试使用模块集时,它似乎只抓住了未着色的jar 我已经能够使用文件集实现这一点,但它不是很优雅,而且它不能处理我的开发和生产版本改变着色jar的命名这一事实 我假设模块集仍然是正确的方法,但我不确定如何让它抓取我的着色罐子,并且只抓取着色
我假设模块集仍然是正确的方法,但我不确定如何让它抓取我的着色罐子,并且只抓取着色罐子。有人能帮忙吗?根据示例和以下内容,您需要这样的帮助: 1) 带有着色jar项目的父pom,然后是分发项目
<?xml version="1.0" encoding="UTF-8"?>
<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>com.greg</groupId>
<artifactId>assembly-example</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<name>assembly-example</name>
<modules>
<module>shaded-jar-1</module>
<module>shaded-jar-2</module>
<module>distribution</module>
</modules>
</project>
检查你的shade插件是否正常工作,在你的traget文件夹中,你应该有一个胖罐子和一个原始罐子,胖罐子就是“defaut”工件
greg@greg-XPS-13-9360:~/work/assembly-example$ ls -l shaded-jar-1/target/
total 520
drwxrwxr-x 3 greg greg 4096 Jun 15 10:37 classes
drwxrwxr-x 3 greg greg 4096 Jun 15 10:37 generated-sources
drwxrwxr-x 3 greg greg 4096 Jun 15 10:37 generated-test-sources
drwxrwxr-x 2 greg greg 4096 Jun 15 10:37 maven-archiver
drwxrwxr-x 3 greg greg 4096 Jun 15 10:37 maven-status
-rw-rw-r-- 1 greg greg 2418 Jun 15 10:37 original-shaded-jar-1-1.0-SNAPSHOT.jar
-rw-rw-r-- 1 greg greg 501520 Jun 15 10:37 shaded-jar-1-1.0-SNAPSHOT.jar
drwxrwxr-x 3 greg greg 4096 Jun 15 10:37 test-classes
在与现有模块(此处为
module1
和module2
)相同级别的发行版
模块中,使用文件集
而不是模块集
,创建src/assembly/bin.xml
:
箱子
迪尔
拉链
假的
../module1/目标
*-shaded.jar
../module2/target
*-shaded.jar
分发项目的pom.xml
与往常一样:
<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>
<artifactId>distribution</artifactId>
<packaging>pom</packaging>
<parent>
<groupId>my.group</groupId>
<artifactId>group-parent</artifactId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.3.0</version>
<executions>
<execution>
<id>distro-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<descriptors>
<descriptor>src/assembly/bin.xml</descriptor>
</descriptors>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</assembly>
4.0.0
分布
聚甲醛
我的团队
组父级
1.0.0-SNAPSHOT
org.apache.maven.plugins
maven汇编插件
3.3.0
发行版组装
包裹
单一的
src/assembly/bin.xml
你所说的“着色罐子”到底是什么意思?请显示您的pom文件和程序集描述符…这基本上是我一直在尝试的。我以前没有二进制文件部分。但即使添加了它,我也没有得到着色的jar。我得到的是普通的jar及其所有依赖项。如果对我有用,您可以得到我的示例,并尝试看看有什么不同。请参阅更新的答案,che检查您的shade插件是否正常工作。
<assembly xmlns="http://maven.apache.org/ASSEMBLY/2.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.0.0 http://maven.apache.org/xsd/assembly-2.0.0.xsd">
<id>bin</id>
<formats>
<format>zip</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<moduleSets>
<moduleSet>
<!-- Enable access to all projects in the current multimodule build! -->
<useAllReactorProjects>true</useAllReactorProjects>
<!-- Now, select which projects to include in this module-set. -->
<includes>
<include>com.greg:shaded-jar-1</include>
<include>com.greg:shaded-jar-2</include>
</includes>
<binaries>
<outputDirectory>modules/maven-assembly-plugin</outputDirectory>
<unpack>false</unpack>
</binaries>
</moduleSet>
</moduleSets>
</assembly>
jar tvf distribution/target/distribution-1.0-SNAPSHOT-bin.zip
0 Fri Jun 15 10:37:32 BST 2018 modules/
0 Fri Jun 15 10:37:32 BST 2018 modules/maven-assembly-plugin/
501520 Fri Jun 15 10:37:30 BST 2018 modules/maven-assembly-plugin/shaded-jar-1-1.0-SNAPSHOT.jar
501520 Fri Jun 15 10:37:30 BST 2018 modules/maven-assembly-plugin/shaded-jar-2-1.0-SNAPSHOT.jar
greg@greg-XPS-13-9360:~/work/assembly-example$ ls -l shaded-jar-1/target/
total 520
drwxrwxr-x 3 greg greg 4096 Jun 15 10:37 classes
drwxrwxr-x 3 greg greg 4096 Jun 15 10:37 generated-sources
drwxrwxr-x 3 greg greg 4096 Jun 15 10:37 generated-test-sources
drwxrwxr-x 2 greg greg 4096 Jun 15 10:37 maven-archiver
drwxrwxr-x 3 greg greg 4096 Jun 15 10:37 maven-status
-rw-rw-r-- 1 greg greg 2418 Jun 15 10:37 original-shaded-jar-1-1.0-SNAPSHOT.jar
-rw-rw-r-- 1 greg greg 501520 Jun 15 10:37 shaded-jar-1-1.0-SNAPSHOT.jar
drwxrwxr-x 3 greg greg 4096 Jun 15 10:37 test-classes
<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>
<artifactId>distribution</artifactId>
<packaging>pom</packaging>
<parent>
<groupId>my.group</groupId>
<artifactId>group-parent</artifactId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.3.0</version>
<executions>
<execution>
<id>distro-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<descriptors>
<descriptor>src/assembly/bin.xml</descriptor>
</descriptors>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</assembly>