繁体   English   中英

从另一个项目编译模块

[英]Compiling module from another project

我的主要项目有一些模块:app:anotherModule ,...。

然后,我在github上创建了一个库,并将其推到另一个项目中。 它有两个模块,一个库:library和一个示例应用程序:sample

我想做的是在编译时将:library集成到我的项目中,即不复制文件(正如有人在这里建议的那样)。

我做了什么

我编辑了我的项目settings.gradle并添加了:

include ':library'
project(':library').projectDir = new File(settingsDir,'../ForkedLibrary/library')

引用派生库的文件夹。 同时,我将compile project(':library')到我的应用程序模块中。

怎么了

编译失败并显示:

在项目“:library”上找不到属性“ ANDROID_BUILD_SDK_VERSION”

我知道为什么会发生这种情况: ForkedLibrary/library/build.gradle引用了ForkedLibrary/gradle.properties某些项目值,如下所示:

ANDROID_BUILD_MIN_SDK_VERSION=14
ANDROID_BUILD_TARGET_SDK_VERSION=23
ANDROID_BUILD_SDK_VERSION=23
ANDROID_BUILD_TOOLS_VERSION=23.0.0
... + LOTS of other stuff, POM_ info, version names, ...

我可以通过将这些行复制粘贴到我的项目 gradle.properties来解决此gradle.properties ,但是在我自己的gradle属性文件中包含:library特定的东西是没有意义的。 该ForkedLibrary属性文件包含与我的项目无关的内容,例如原始开发人员信息和其他POM_字段。

所以

如何解决此问题(在我自己的gradle.properties文件中不包括ForkedLibrary属性)?

应该是一个评论,但是太长了。 如果没有帮助,我会删除它。

如您在问题中所述, ForkedLibrary/library/build.gradle使用的是ForkedLibrary/gradle.properties
它仅在ForkedLibrary特定项目中有效,因为另一个项目使用其自己的gradle.properties

我猜library/build.gradle文件有点像:

project.VERSION_NAME

您可以参考官方文档

该配置按以下顺序应用(如果在多个位置配置了一个选项,则最后一个获胜):

  • 从gradle.properties在项目生成目录中。
  • 从gradle用户主目录中的gradle.properties中获取。
  • 从系统属性(例如,在命令行上设置-Dsome.property)。

在这种情况下, 您必须复制 build.properties 的属性

在这种情况下,有一种我从未尝试过的替代方法 ,如下所示:

processResources {
    expand(project.properties)
}

如您在官方文档中所读:

将资源从其源复制到目标目录,从而可能对其进行处理。 确保目标目录中没有剩余资源。

扩展方法是:

在复制每个文件时扩展其属性引用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM