我们假设我有一个由2个使用Gradle
构建的应用程序使用的库。如何独立于应用程序(文件系统中完全不同的文件夹)编辑/编译库,但是能够使用库编译应用程序?
问题是默认情况下,库和应用程序应位于同一个项目目录中:
project
|--library
L--app
所以应用程序的build.gradle
文件如下所示:
compile(project(":library"))
这是一个问题,因为它需要将库文件存储在app文件夹所在的同一文件夹中,因为我们有2个应用程序无法实现。
我有使用Maven
的经验,并且它通过以下方式解决了:工件保存在本地Maven存储中,可以从应用程序中引用,因此无论它在哪里都无关紧要在文件系统中。 Gradle
的类似解决方案?
PS。这是以下问题:如果我想使用任何第三方库,我是否必须使用compile project ':library'
将其克隆到项目文件夹和引用中?有没有什么方法可以将它克隆到完全独立的文件系统位置,只需通过' groupId + artifactId + version'?
答案 0 :(得分:0)
您可以通过以下方式实现这一目标:
共享已编译库的字节码:
build.gradle
您将添加
apply plugin: 'maven-publish'
和"安装"通过执行gradle publishToMavenLocal
在您的应用中,您将指向已发布的工件,并将本地maven repo指定为存储库:
repositories {
mavenLocal()
}
dependencies {
config "yourArtifactGAV"
}
分享项目资源并将其作为构建
的一部分添加在应用程序目录中,您将添加settings.gradle
文件:
include $yourLibName
def p = findProject(":$yourLibName")
p.projectDir = new File(settingsDir, absolutePathToYourLibraryDir)
这样每次编译应用程序时都会自动编译库+你会向它添加项目级依赖
dependencies {
config project(':$yourLibName')
}