Gradle"本地存储库"类似于Maven?

时间:2016-08-14 06:22:21

标签: maven gradle android-gradle

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

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

project
|--library
L--app

所以应用程序的build.gradle文件如下所示:

compile(project(":library")) 

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

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

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

1 个答案:

答案 0 :(得分:0)

您可以通过以下方式实现这一目标:

  1. 共享已编译库的字节码

      库中的
    • build.gradle您将添加

      apply plugin: 'maven-publish'
      

      和"安装"通过执行gradle publishToMavenLocal

    • 在本地存储库中创建工件
    • 在您的应用中,您将指向已发布的工件,并将本地maven repo指定为存储库:

      repositories {
          mavenLocal()
      }
      dependencies {
          config "yourArtifactGAV"
      }
      
  2. 分享项目资源并将其作为构建

    的一部分添加
    • 在应用程序目录中,您将添加settings.gradle文件:

      include $yourLibName
      def p = findProject(":$yourLibName")
      p.projectDir = new File(settingsDir, absolutePathToYourLibraryDir)
      
    • 这样每次编译应用程序时都会自动编译库+你会向它添加项目级依赖

      dependencies {
          config project(':$yourLibName')
      }