当前位置: 首页 > 面试题库 >

Gradle依赖关系:按相对路径编译项目

朱祺
2023-03-14
问题内容

是否可以在Gradle(在Android Studio中)中指定对当前项目边界之外的另一个gradle项目的依赖关系?例如,相对路径如下所示:

dependencies {
  compile project('../../stdlib/dagger')
}

所以我想的是这样的:

我有一个Android应用程序。结构如下:

  • MyApp(路径为/ Users / foo / workspace / MyApp)
    • 应用程序(路径为/ Users / foo / workspace / MyApp / app)

我有一个gradle android库项目,其中包含3个子模块:

  • stdlib(路径为/ Users / foo / workspace / stdlib)
    • 匕首(路径为/ Users / foo / workspace / stdlib / dagger)
    • utils(路径为/ Users / foo / workspace / stdlib / utils)
    • http(路径为/ Users / foo / workspace / stdlib / http)

我想要的是将Dagger,utils,http模块编译到MyApp项目中。

stdlib库模块正在大量开发中,并将随着MyApp的增长而增长。因此,我不想每次更改时都将它们推送到Maven存储库中。

那么有可能以某种方式链接其他gradle项目吗?我正在寻找临时解决方案。一旦源代码稳定,我将把std库推入maven存储库。

另外,作为解决方法,可以使用sourceSet解决方案。我还考虑过在MyApp中创建一个库文件夹,该文件夹是与stdlib的符号链接,但是我没有按预期运行它:

  • MyApp(路径为/ Users / foo / workspace / MyApp)
    • 应用程序(路径为/ Users / foo / workspace / MyApp / app)
    • 库(符号链接到/ Users / foo / workspace / stdlib)
 dependencies {
      compile project(':libraries:dagger')
    }

任何想法如何解决gradle中的这种依赖性?


问题答案:

您可以使用主项目中的“
settings.gradle”文件包含外部根项目模块。它也必须是gradle项目,在特定的Android构建环境中,您必须将每个模块配置为“
android-library”插件项目。

例如,在“ MyApp”项目settings.gradle中,您可以尝试以下操作:

include 'app'
include 'dagger'
project(':dagger').projectDir = new File('/Users/foo/workspace/stdlib/dagger')

您的“ MyApp” build.gradle必须以相对路径Gradle方式反映“匕首”模块的需求:

dependencies {
  compile project(':dagger')
}

就是这样。对您需要的每个外部模块重复此步骤,您将拥有正确的Gradle多项目配置。



 类似资料:
  • 我正在使用mongodb和Spring Boot。最近,我的mongodb升级到了3.0版本。 我对Spring使用以下Gradle依赖项: 如果我查看maven存储库中的gradle:,我会看到以下内容(http://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-mongodb/1.2.6

  • 问题内容: 我有一个专有的jar,要作为依赖项添加到pom中。 但是我不想将其添加到存储库中。原因是我希望我通常的Maven命令(例如)可以mvn compile直接使用。(无需开发人员自己将其添加到某个存储库中)。 我希望该jar位于源代码管理的3rdparty库中,并通过pom.xml文件中的相对路径链接到它。 能做到吗?怎么样? 问题答案: 我希望该jar位于源代码管理的3rdparty库中

  • Gradle依赖项之间的差异。 我的问题是 这里的编译项目、apk项目、编译项目和提供的项目之间有什么区别?

  • 我正在使用gradle构建一个groovy/java应用程序。在我向google guice 3.0添加依赖项之前,这一直很好。Gradle不会将guice jar添加到编译类路径中,至少看起来是这样。我遇到了这样的错误: 在我的身材中。gradle file I具有以下依赖项: 我正在使用Springsource工具套件2.9.2及其gradle插件开发应用程序,它使用gradles依赖关系管理

  • 我的结构如下: 项目A- 项目B- 编译项目B一切正常: 项目B/build.gradle: ProjectB/settings.gradle: 然而,在编译ProjectA时,它表示找不到ProjectC ProjectA/build.gradle: ProjectA/settings.gradle: 这将显示以下错误: 其中:构建文件ProjectB\build.gradle 出了什么问题: