我正在与Gradle和两个单独的项目一起工作,其中一个项目将成为我想编译成一个可实施jar的库,该库可以在另一个项目(应用程序)以及其他项目中使用。
在我的库中,我依赖Java Boot和一些Google库。我需要在我的库的Gradle文件中指定什么,在编译时Java Boot和其他库没有被编译到该jar中,从而炸毁了它的大小?
我实现我的库jar的应用程序应该提供这些库。在这种情况下,我需要在我的应用程序的Gradle文件中指定特定的内容吗?
答案 0 :(得分:0)
您可以将库项目的依赖项定义为compileOnly
:
dependencies {
compileOnly group: 'com.google.guava', name: 'guava', version: '27.0-jre'
}
这样,您的依赖项将不会导出,也不会打包到任何工件中。
如果您在测试中需要此依赖性,则还需要将其用于testImplementation
配置。
答案 1 :(得分:0)
从问题的这一部分开始:
[...] Java Boot和其他库没有被编译到该jar文件中,从而扩大了它的大小。
我了解到您已经将Springboot插件应用于您的库(默认情况下会生成一个胖jar,其中包括所有依赖项),而您只想创建一个简单/普通的Java库。
如果我的假设正确,那么最简单的解决方案是仅将Springboot插件用于依赖项管理,而无需将其实际应用于您的项目,如here所述。
您还应该应用Gradle Java library plugin,以受益于API /实施分离功能。
库项目的示例构建脚本:
table