[英]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.