IntelliJ gradle添加模块依赖

时间:2016-08-10 15:40:16

标签: java intellij-idea gradle

使用IntelliJ 2016.2。
使用Gradle 2.14.1

我有两个项目,每个项目都有自己的build.gradle文件和单独的目录结构:

myLib (meant to be jarred and used by others)
  - build.gradle
  - settings.gradle
  - src/main/java/...

sandbox (spring boot web app)
  - build.gradle
  - settings.gradle
  - src/main/java/...
  - src/main/resources/...

希望你能得到照片。在IntelliJ中,我有以下模块结构,在同一级别(没有子项目):

- myLib
- sandbox

简单请求...我想在myLib应用中使用sandbox。我想在同一个项目中同时开发这两个模块。

我已尝试在IntelliJ中为sandbox添加模块依赖关系myLib。没有骰子。我尝试过添加jar参考,没有骰子。

我相信我需要在build.gradle文件中添加依赖项,但无法弄清楚如何。我已尝试过compile files '<path to myLib.jar>'等等。没有骰子。

4 个答案:

答案 0 :(得分:45)

本地模块

这是大多数Gradle项目所遵循的模式,其中有一个库,然后是使用该库的示例应用程序

 - module/
    - build.gradle
    - src/main/java
 - library/
    - build.gradle
    - src/main/java
 - settings.gradle
 - build.gradle

在那个顶级settings.gradle你有

include ':library', ':module'

module/build.gradle中,您编译包含项目

dependencies {
    compile project(':library')
}

基本上,顶级build.gradle是子项目和变量的所有常见配置的包装器。例如,它最常用于Maven网址的repositories { }部分。有关详细信息,请访问Gradle - Multi-project builds

远程模块

以上内容适用于本地工作,但是假设您希望与许多其他开发人员共享您的repo,而无需下载额外的源代码。然后您将其他库发布到远程服务器。

如果您的项目在GitHub上公开,请使用jitpack.io之类的服务。您还可以在Bintray OSS或Maven Central上设置帐户,以使您的库像大多数其他库一样可用。

如果您的项目在公司内私有,则需要一些Maven类型的服务器,无论是通用Web服务器,还是Nexus或Artifactory,您都可以add that with an addition to the repositories block.

repositories {
    maven { url "http://some.maven.site/" }
}

然后正常添加compileimplementation来源

答案 1 :(得分:4)

最后,Gradle 3.1解决了这个问题。现在支持复合构建。更多here。 简而言之,将此行添加到沙箱settings.gradle文件 -

includeBuild '<PATH>/myLib'

如果您无法升级Gradle,那么唯一的希望就是将mylib工件发布到本地maven repo并将mavenLocal()添加到sandbox / build.gradle。

答案 2 :(得分:0)

它在文章https://blog.jetbrains.com/idea/2016/10/intellij-idea-2016-3-eap-gradle-composite-builds-and-android-studio-2-2/

中进行了讨论

基本上,您需要使用复合构建。因此,在“视图”>“工具”窗口>“ Gradle”>“右键单击使用库的项目”>“复合构建配置”>中,选择要使用本地版本的库项目。

进行重建,然后使用本地依赖项

答案 3 :(得分:0)

最简单的方法是将lib文件夹保留在项目的父目录中,并在模块的build.gradle文件中包括以下行

implementation fileTree(dir: '../libs', include: ['*.jar'])
implementation fileTree(dir: '../libs', include: ['*.aar'])