maven - Gradle的 “local repository”与Maven相似吗?

标签 maven gradle android-gradle-plugin

假设我有1个库,供Gradle构建的2个应用使用。如何才能独立于应用程序(文件系统中的完全不同的文件夹)独立编辑/编译库,但能够使用库来编译应用程序?

问题是默认情况下,库和应用程序应位于同一项目目录中:

project
|--library
L--app

因此应用程序的build.gradle文件如下所示:
compile(project(":library")) 

这是一个问题,因为它需要将库文件存储在与应用程序文件夹相同的文件夹中,并且由于我们有2个应用程序,因此无法实现。

我有Maven的经验,并通过以下方式解决了问题: Artifact 保存在本地Maven存储中,并且可以从应用程序中引用,因此文件系统中的位置无关紧要。 Gradle的类似解决方案?

PS。这是以下问题:如果我想使用任何第三方库,是否必须将其克隆到项目文件夹中并使用compile project ':library'进行引用?有什么方法可以将其克隆到完全独立的文件系统位置并仅通过“groupId + artifactId + version”进行引用?

最佳答案

您可以通过以下方法实现:

  • 共享编译库的字节码:

    您将在库的build.gradle中添加

  • apply plugin: 'maven-publish'
    

    并通过执行gradle publishToMavenLocal
  • 在本地存储库中“安装” Artifact
    在应用程序中的
  • 中,您将指向已发布的 Artifact ,并指定本地Maven存储库作为存储库:
    repositories {
        mavenLocal()
    }
    dependencies {
        config "yourArtifactGAV"
    }
    
  • 共享项目源并将其添加为构建的一部分

    在应用程序目录中的
  • 中,您将添加settings.gradle文件:
    include $yourLibName
    def p = findProject(":$yourLibName")
    p.projectDir = new File(settingsDir, absolutePathToYourLibraryDir)
    
  • 这样,每次您编译应用程序时,库都会自动编译,并且会向其添加项目级别的依赖项
    dependencies {
        config project(':$yourLibName')
    }
    
  • 关于maven - Gradle的 “local repository”与Maven相似吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38939723/

    相关文章:

    Android如何根据背景图片改变文字颜色

    android - 对文件 : Translation has been interrupted 进行索引时出现异常

    android - 重复的 zip 条目 [97.jar :androidx/versionedparcelable/CustomVersionedParcelable. 类]

    maven - Nexus Maven m2Eclipse 问题

    java - 针对指定平台(Android 或 iOS)运行自动化测试。每次发布仅一个平台。如何指定Maven必须运行在哪个平台?

    java - 如何让我的 JUnit 测试从 main 访问资源?

    android - 该项目正在使用不受支持的 Gradle 版本

    Android Gradle 插件 3.1.0 不再找到 androidJacocoAnt 配置

    java - 迁移到 Android Studio 2.2 后出现 DexIndexOverflowException

    java - 包含用于 JUnit 测试的 OSGI jar