繁体   English   中英

IntelliJ gradle 添加模块依赖

[英]IntelliJ gradle add module dependency

使用 IntelliJ 2016.2。
使用 Gradle 2.14.1

我有 2 个项目,每个项目都有自己的 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

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

我尝试在 IntelliJ 中为myLibsandbox添加模块依赖项。 没有骰子。 我试过添加一个罐子参考,没有骰子。

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

本地模块

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

 - app/
    - build.gradle
    - src/main/java  # where your main class would be 
 - library/
    - build.gradle
    - src/main/java  # dependencies of the app module 
 - settings.gradle
 - build.gradle

在那个顶级settings.gradle你有

include ':library', ':app'

app/build.gradle中,编译包含的项目

dependencies {
    compile project(':library')
}

基本上,顶级build.gradle是子项目和变量的所有常见配置的包装器。 例如,它最常用于 Maven url 的repositories { }部分。 Gradle - 多项目构建

遥控器模块

以上对于本地工作来说很好,但是假设您想与许多其他开发人员共享您的存储库,而不让他们下载额外的源代码。 然后您会将其他库发布到远程服务器。

当您将这些行添加到项目中时,这就是您已经在做的事情

implementation("org:artifact:version")

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

如果您的项目在您的公司内是私有的,您将需要一些 Maven 类型的服务器,无论是通用 Web 服务器,还是 Nexus 或 Artifactory,您都可以将其添加到存储库块中。

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

然后像往常一样添加compileimplementation

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

includeBuild '<PATH>/myLib'

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

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

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

我知道这很旧,但我最近遇到了同样的问题,这是我的解决方案:

假设这个文件树:

.
|- app
|  |- src
|  |  |- ...
|  |- build.gradle
|
|- lib
|  |- src
|  |  |- ...
|  |- build.gradle
|
|- settings.gradle

您可以这样设置您的 gradle 项目:

  • ./settings.gradle
rootProject.name = 'some-project'
include 'app'
include 'lib'
  • ./app/build.gradle
// ...
dependencies {
    // depend on sibling module lib
    implementation project(':lib')
}
// ...

最后,确保您要从lib模块导入的内容不在基础包中。

这个答案在现代 gradle 和 intellij 中已经过时了,请参考darwinbaisa 的答案

原始答案

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

基本上你需要使用复合构建。 所以查看 > 工具窗口 > Gradle > 右键单击​​使用库的项目 > 复合构建配置 > 勾选您要使用本地版本的库项目。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM