java - 未使用的类未打包在 Maven 多模块项目中
问题描述
我将 Maven 3.6.2 与多模块 Java 项目一起使用。example
模块依赖于core
模块,所以我在example
模块的 POM 中有这样的依赖:
<dependency>
<groupId>com.company</groupId>
<artifactId>core</artifactId>
<version>${project.version}</version>
</dependency>
问题是当我运行时,并非模块中的所有类core
都被打包到example
jar 中mvn clean install
。只有example
项目中使用的类被打包。我需要为以后的过程打包所有类。
我正在使用maven-shade-plugin
这个配置:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.2.1</version>
<configuration>
<createDependencyReducedPom>false</createDependencyReducedPom>
<minimizeJar>true</minimizeJar>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
<exclude>module-info.class</exclude>
</excludes>
</filter>
</filters>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<finalName>${project.name}</finalName>
</configuration>
</execution>
</executions>
</plugin>
如何在 jar 中包含core
模块中的所有类,example
而不必在 jar 中使用它们example
?
解决方案
问题是minimizeJar
参数。根据https://maven.apache.org/plugins/maven-shade-plugin/shade-mojo.html#minimizeJar:
当为 true 时,依赖项将在类级别上被剥离为仅工件所需的传递外壳。
我删除了该参数,它按预期工作。
推荐阅读
- excel - 在Excel VBA中双击执行宏
- javascript - 如何导入 ReactBootstrap 以在 react.js 中使用按钮
- java - 如何使用java检查aerospike数据库中是否存在bin?
- reactjs - React:图像源无效道具(源使用带有图像地址的字符串)
- google-chrome - 在 Chrome 中运行 javascript 后查看完整页面源代码(“查看生成的源代码”)?
- python - 响应[412]当使用requests python包访问该网页时,如何绕过?
- jquery - 如何向引导程序 datepicker 添加失效错误消息
- python - 如何将 JSON 字符串转换为 Python 对象(字典)
- windows - 在 Windows 10 上运行 yarn start 一直失败
- asp.net-mvc - 在 Visual Studio for Mac 的 MVC 项目中无法看到 App_data 文件夹