我正在尝试实施一个流程,这样当其他人需要处理项目时,它就不会影响我的版本控制。
目前我有一个库模块从另一个项目添加到当前项目中。这是我通过settings.gradle文件完成的,如下所示:
include ':MainModule', ':ExternalModule'
project(':ExternalModule').projectDir = new File('C:\\Projects\\AnotherProject\\libraryModule')
我的问题是,如果我这样做,我会影响所有其他开发项目的开发人员,每次有人推送到存储库时,这个文件都会被更改。我想避免这种情况。
我正在考虑在local.properties中添加外部库模块的路径,该路径未被推送到存储库并由每个开发人员处理。我做了这样的事情:
include ':MainModule', ':ExternalModule'
project(':ExternalModule').projectDir = new File(getExternalModuleDir())
def getExternalModuleDir() {
Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())
def externalModuleDir = properties.getProperty('module.dir', null)
if (externalModuleDir == null)
throw new GradleException("Module location not found. Define location with module.dir in the local.properties file!")
return externalModuleDir
}
但是我收到以下错误:
无法找到属性'项目'关于设置' AwesomeProject'。
我认为这是因为settings.gradle无法访问local.properties(或者在local.properties之前调用了settings.gradle,我真的不确定确切的流程)。
我做错了什么?我想要实现的流程是正确的吗?做这样的事的正确方法是什么?
答案 0 :(得分:2)
我最终找到了解决问题的简单方法。我不知道这是最好的解决方案还是优雅的解决方案,但这就是我实现我想要的方式:
def getExternalModuleDir() {
Properties properties = new Properties()
properties.load(new File(rootDir.absolutePath + "/local.properties").newDataInputStream())
def externalModuleDir = properties.getProperty('module.dir', null)
if (externalModuleDir == null) {
throw new GradleException(
""Module location not found. Define location with module.dir in the local.properties file!")
}
return externalModuleDir
}
在 local.properties 文件中,我设置了我的属性 module.dir :
module.dir=C:\\Projects\\AnotherProject\\libraryModule
唯一的限制是 local.properties 文件应始终位于与 settings.gradle 文件相同的文件夹中(通常是这样)。