当前位置: 首页 > 知识库问答 >
问题:

编译、apk项目、编译项目、提供、实现项目之间的Gradle依赖关系差异

宰父保臣
2023-03-14

Gradle依赖项之间的差异。

 compile
 apk project 
 compile project
 provided project
 implementation

我的问题是

这里的编译项目、apk项目、编译项目和提供的项目之间有什么区别?

共有1个答案

闻慎之
2023-03-14

这里要讨论两件事:依赖配置和依赖源。

依赖项配置

配置有助于定义依赖项的传递性,从而消除了发现和指定您自己的项目/库所需的库的痛苦,包括自动发现和指定这些库。gradle中的配置概念与Maven的scopes非常相似:

  1. 编译:编译依赖项在项目的所有类路径中都可用。此外,这些依赖关系将传播到依赖项目。编译时依赖关系通常在运行时需要

在Android上可以遇到更多配置,例如testCompile,它允许您指定仅用于测试的编译时依赖项,假设您想在测试中使用junit,那么您将执行以下操作:

testCompile 'junit:junit:4.12'

依赖源

一旦了解了可用的配置,就需要指定实际的依赖关系。依赖关系可能是内部的,也可能是外部的,您可能依赖于正在使用的另一个库,以及公共可用的库。这里输入了关键字project,允许您指定对内部模块或库的依赖关系。通过将依赖项定义为编译项目,可以将该模块或库作为可传递依赖项添加到项目中。

假设您有一个包含三个模块(生产者消费者共享)的项目消息,项目结构如下所示:

messages/
    build.gradle
    settings.gradle
    consumer/
        build.gradle
    producer/
        build.gradle
    shared/
        build.gradle

现在假设消费者和生产者都以json格式存储消息,并且您希望使用google gson来实现此目的。假设两个项目都有一些共同的源代码,它们都依赖于您的共享模块<代码>消费者的内部版本。然后,gradle可以定义以下依赖项:

dependencies {
   // Internal dependency to project shared
   compile project (':shared')

   // External dependency to publicly available library, 
   // through public repositories such as jcenter() or mavencentral()
   compile 'com.google.code.gson:gson:1.7.2'
}

总而言之,正是配置和源代码的结合使您能够将依赖项声明为compilecompile projectapk project等等!

 类似资料:
  • 问题内容: 是否可以在Gradle(在Android Studio中)中指定对当前项目边界之外的另一个gradle项目的依赖关系?例如,相对路径如下所示: 所以我想的是这样的: 我有一个Android应用程序。结构如下: MyApp(路径为/ Users / foo / workspace / MyApp) 应用程序(路径为/ Users / foo / workspace / MyApp / a

  • 我如何在PP3的build.gradle文件中将PP1声明为编译依赖项? 我正在运行Gradle V1.2

  • 我正在使用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

  • 编译 Java 项目 一个项目可以关联多个编译器。 java 项目关联的是 java 编译器。可以通过以下方式来查看项目关联的编译器: 在 Package Explorer 视图中鼠标右击项目并选择 Properties 在左侧的树形菜单中点击 Builders java编译器用于编译java项目。通过点 New 按钮我们可以让java项目关联 Ant builder 编译器。 java 编译器通

  • This tutorial describes the base compilation commands provided with OCaml. It is useful to learn these commands to understand OCaml's compilation model. However, eventually you will want to use a buil

  • 我知道这个问题已经在几个方面被问到,但希望澄清,因为我没有Linux测试,我会把项目发送给谁将使用Linux的人。 问题:有一个有几个库的Netbeans Java项目(请参见pic),我需要压缩并将整个项目发送给某人,并给他们在Linux下编译和打开它的指导。 我读过:Link1、Link2、Link3等等。