java - 如何使用 maven shade 插件捆绑来自不同模块的类
问题描述
我想从另一个包'com.y'生成一个包含包'com.x'和一个类(比如说,Utils.class)的jar。我可以将完整的包 com.y 捆绑在阴影 jar 中,但我只想要一个类。它似乎不适用于我下面的内容。我还尝试通过提供类的路径:com/bar/cli/pol/Utils.class 没有任何运气。
<dependencies>
<dependency>
<groupId>com.x</groupId>
<artifactId>foo</artifactId>
</dependency>
<dependency>
<groupId>com.y</groupId>
<artifactId>bar</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.2.3</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<artifactSet>
<includes>
<include>com.x:foo</include>
<include>com.y:bar:**/Utils.class</include>
</includes>
</artifactSet>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
解决方案
我通过执行以下操作得到了这个工作:
<configuration>
<finalName>myshadedjar</finalName>
<artifactSet>
<includes>
<include>com.x:foo</include>
<include>com.y:bar</include>
</includes>
</artifactSet>
<filters>
<filter>
<artifact>com.y:bar</artifact>
<includes>
<include>com/bar/cli/pol/Utils.class</include>
</includes>
</filter>
</filters>
推荐阅读
- typo3 - TYPO3 Fluid:只有一些 HTML 标签没有在流体模板中呈现
- reactjs - React 代码拆分和一个用于新浏览器的捆绑包和一个用于旧浏览器的捆绑包
- codeigniter - 根据用户输入获取昨天的日期
- amazon-web-services - UnhandledPromiseRejectionWarning: AccessDeniedException
- firebase - There is no user record corresponding to this identifier. The user may have been deleted
- php - 尝试获取注册表项值时注册表项中的根无效
- android - 平板电脑上的 Angular 应用程序缺少互联网连接
- mysql - mysql - 相似记录的递归查询
- java - @Transactional 方法中的 Spring 事务处理 JMSTemplate
- reactjs - React 模块解析失败:意外字符“@”