我有一个类似的项目设置,其中我的项目都相对于彼此位于同级文件夹中:
+ 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/