gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 06:05:47 24 4
gpt4 key购买 nike

假设我有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/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com