以编程方式将依赖项添加到Gradle中的外部项目

时间:2014-08-20 15:37:01

标签: java android gradle dependencies

首先,所有这些代码都可以在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

0 个答案:

没有答案