我的主要项目包含一些模块::app
,:anotherModule
,....
然后我在github上分叉了一个库并将其推入另一个项目中。它有两个模块,一个库:library
和一个示例应用:sample
。
我尝试做的是在编译时将:library
集成到我的项目中,即不复制文件(正如有人在此建议的那样)。
我编辑了我的项目settings.gradle并添加了:
include ':library'
project(':library').projectDir = new File(settingsDir,'../ForkedLibrary/library')
引用分叉库的文件夹。与此同时,我将compile project(':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属性文件中使用:library
特定内容是没有意义的。 ForkedLibrary属性文件包含与我的项目无关的内容,例如原始开发人员信息和其他POM_
字段。
如何解决此问题(在我自己的ForkedLibrary
文件中不包含gradle.properties
属性)?
答案 0 :(得分:0)
它应该是一个评论,但它太长了。如果它没有帮助你,我会删除它。
您在问题中描述的ForkedLibrary/library/build.gradle
使用的是ForkedLibrary/gradle.properties
它仅适用于ForkedLibrary特定项目,因为另一个项目使用自己的gradle.properties
。
我想library/build.gradle
文件有如下所述:
project.VERSION_NAME
您可以参考official doc:
配置按以下顺序应用(如果在多个位置配置选项,则最后一个获胜):
- 来自项目构建目录中的gradle.properties。
- 来自gradle用户主页中的gradle.properties。
- 来自系统属性,例如在命令行上设置-Dsome.property时。
在这种情况下您必须复制build.properties
我在这种情况下从未尝试过替代,如下所示:
processResources {
expand(project.properties)
}
您可以阅读official doc:
将资源从其源复制到目标目录,可能会对其进行处理。确保目标目录中没有过时的资源。
在复制时扩展每个文件中的属性引用。