Java库,这些依赖关系是通过实现应用

时间:2019-05-15 16:40:39

标签: java gradle dynamic jar linker

我正在与Gradle和两个单独的项目一起工作,其中一个项目将成为我想编译成一个可实施jar的库,该库可以在另一个项目(应用程序)以及其他项目中使用。

在我的库中,我依赖Java Boot和一些Google库。我需要在我的库的Gradle文件中指定什么,在编译时Java Boot和其他库没有被编译到该jar中,从而炸毁了它的大小?

我实现我的库jar的应用程序应该提供这些库。在这种情况下,我需要在我的应用程序的Gradle文件中指定特定的内容吗?

2 个答案:

答案 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