首先,所有这些代码都可以在https://github.com/pcclark4/GradleDependencyTest的GitHub上找到,这可以让我更容易理解我将要描述的内容。
我有一个独特的问题,即主模块在运行时使用反射加载类(如果存在)。 Project1 包含两个模块: Lolol ,主要的应用程序模块,它使用反射来加载实现TestInterface的类的实例,以及 LibLib ,包含TestInterface接口的模块。
使用 Project2 中的settings.gradle文件,我手动上一个目录,然后返回 Project1 目录,以便定义这些项目。因此,我可以打开settings.gradle文件并查看 Project2 以及 Project1 中的两个模块。 Project2 中的模块 Rofl 是一个库模块,它依赖于来自 Project1 的 LibLib ,因此我可以定义一个类扩展TestInterface。
如果我打开 Project1 ,即使没有 Project2 ,我仍然可以构建它,因为它真的不关心该类是否存在。如果它可用,它将加载它。但是,如果我打开 Project2 ,我需要 Lolol 模块在构建时将 Rofl 视为依赖项。我不想手动插入"编译项目(':Rofl')"每次我决定添加扩展程序时,进入 Lolol build.gradle文件。相反,如果我能够使用 Rofl build.gradle文件以编程方式告诉 Lolol ,我希望它能够构建 Rofl 作为依赖。
我尝试在Rofl的build.gradle中添加这个:
project(':Lolol').dependencies {
compile project(':Rofl')
}
但是,没有成功。
我希望我说的一切都正确。我非常感谢任何建议!目录结构如下,但就像我说的那样,查看我的GitHub项目可能更容易。
├── Project1
│ ├── build.gradle
│ ├── LibLib
│ │ ├── build.gradle
│ │ └── src
│ │ └── main
│ │ ├── AndroidManifest.xml
│ │ └── java
│ │ └── com
│ │ └── eowdaoc
│ │ └── liblib
│ │ └── TestInterface.java
│ ├── Lolol
│ │ ├── build.gradle
│ │ └── src
│ │ └── main
│ │ ├── AndroidManifest.xml
│ │ └── java
│ │ └── com
│ │ └── eowdaoc
│ │ └── lolol
│ │ └── TestActivity.java
│ └── settings.gradle
├── Project2
│ ├── build.gradle
│ ├── Rofl
│ │ ├── build.gradle
│ │ └── src
│ │ └── main
│ │ ├── AndroidManifest.xml
│ │ └── java
│ │ └── com
│ │ └── eowdaoc
│ │ └── rofl
│ │ └── TestClass.java
│ └── settings.gradle