gradle - 从gradle的子项目中引用外部项目

标签 gradle android-gradle-plugin build.gradle

我有一个类似的项目设置,其中我的项目都相对于彼此位于同级文件夹中:

+ mainApp
+ mylib
+ mylib2

mainApp使用我的settings.gradle中的以下内容引用不在其根目录中的mylib库项目:
include ':app', ':mylib'
project(':mylib').projectDir=new File('..\\mylib')

但是,问题在于mylib项目依赖于另一个库mylib2。我基本上可以做同样的事情,并使用settings.gradle引用mylib2并构建mylib可以正常工作。

问题是当我尝试构建mainApp时,它找不到mylib2,因为未运行子项目的settings.gradle,仅运行了根settings.gradle。因此,当mylib的build.gradle文件引用mylib2时,它将找不到mylib2。

我不想从mainApp添加对mylib2的引用,我希望mylib2由mylib引入。

有没有办法从mylib的build.gradle文件引入mylib2?

最佳答案

您似乎对子项目有错误的理解。
每个“项目树”都有一个rootProject。这个rootProject是唯一应该具有设置的项目。gradle包括所有子项目。因此,如果您的3个项目全部一起记录,则必须将它们全部包含在settings.gradle中。

对其他外国项目的引用应添加为依赖项。请注意,您只能以这种方式引用 Artifact 。

您没有说清楚,但是似乎您想将项目“mylib”用作“mainApp”源代码的库

如果这些是Java项目,则只需将“mylib”产生的jar文件添加到“mainApp”的编译配置中:

apply plugin: 'java'
dependencies {
  compile fileTree(dir:'../myLib/build/libs', include : '**/*.jar')
}

对于其他语言,您必须使用该语言的特定语言支持。

关于gradle - 从gradle的子项目中引用外部项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30494629/

相关文章:

gradle - Groovy覆盖默认调用方法

android - 如何在 Android 应用程序中更改 SHA1

gradle - 如何将 JHipster 生成的项目拆分为多模块 gradle 项目

android - 每次 Gradle 运行时都会编译应用程序,占用大量时间

android - java.lang.NoClassDefFoundError : com/android/ide/common/res2/ResourceSet after updating android studio to 3. 2

android - 创建签名包后执行任务

android - 找不到 com.android.databinding :library:3. 1.1

带有 Gradle 2.0 和 Dexguard bootClasspath 错误的 Android Studio 2.0

gradle - 如何在外部构建文件中应用和配置Gradle插件

gradle - Spring Boot Gradle插件,应用程序插件和Gradle 2.3包装器