我的 Maven 项目在构建时会生成一个 jar,我的组织中的许多应用程序都使用该 jar。但是,在一个方面,大 jar 文件大小会导致连接超时,从而导致部署问题,而小 jar 不会导致此问题。对于这个环境,我想去除导致我的 jar 大小膨胀的几个大型运行时依赖项,并在部署点单独加载它们。显然我在编译过程中需要这些依赖项,否则就会失败。
所以我的问题是:有没有办法从已编译的 jar 中提取运行时依赖项?
答案 0 :(得分:1)
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>compile</scope>
</dependency>
通过声明 <scope>compile</scope>
依赖项不会被打包到最终的 jar 中。它将仅用于编译。
可以在此处找到更多信息maven scope documentation
至于你关于传递依赖的问题,不,它不起作用。当它们由父依赖项导入时,使用作用域它们也将从 jar 中排除。
所以你要么在 pom 中将它们声明为独立的依赖项,要么在运行时提供它们。