我试图为上述问题找到合适的解决方案,但到目前为止找不到出路,因此在此处发布以获取问题的正确和精确解决方案。
我在代码版本控制中包含了应用程序 build.gradle
,因为 build.gradle
中经常发生变化(在插件依赖级别)我需要在版本中跟踪此文件 - 长话短说。现在,作为每个团队成员对于以下指定依赖项都有不同的位置 - 我试图从我的 customLocalPaths.properties
加载它,但从 .properties
文件加载变量在这里似乎不起作用。下面列出的 url
属性似乎只接受纯字符串。
buildscript{
repositories{
google()
jcenter()
maven{
url 'D:\\android_workspace_dependencies\\My_XYZ_dependency\\lib' // <-- need to make this path dynamic
}
}
}
知道如何使 url
路径动态化(例如从变量加载它)而不是将其设为静态字符串。我过去常常无法解决路径类型的错误。
注意:.properties
文件工作正常。我在我的应用程序 .properties
中使用来自同一个 build.gradle
文件的其他变量,没有任何问题。我也尝试加载部分路径,即单个目录名称,但没有成功。
答案 0 :(得分:2)
首先,如果您想从本地 libs 目录解析依赖项,您应该使用 flat directory repository type 而不是 maven
存储库。
为了解决您的具体问题,这里至少有两个基于标准 Gradle 功能的简单解决方案:
Init Script 功能允许您根据当前构建环境自定义 Gradle 执行。每个团队成员都可以在他们的本地 Init 脚本中声明他们特定的本地存储库,如下所示:
$USER_HOME/.gradle/init.gradle
allprojects {
buildscript {
repositories {
flatDir {
dirs "c:/DEV/libs"
}
// or with local mavel repo:
// maven { url "c:/DEV/libs" }
}
}
}
项目构建脚本将只包含公共/共享存储库
build.gradle
buildscript{
repositories{
google()
jcenter()
}
}
您可以使用 Gradle 属性来配置存储库 URL/路径,并让团队成员在其用户特定的 gradle.properties
文件中提供此属性值:
build.gradle
buildscript {
repositories {
google()
jcenter()
if (project.hasProperty("myLocalLibRepo")) {
flatDir {
dirs myLocalLibRepo
}
// or with local mavel repo:
// maven { url myLocalLibRepo }
}
}
}
团队成员的属性文件:
$USER_HOME/.gradle/gradle.properties
myLocalLibRepo=c:/DEV/libs
答案 1 :(得分:0)
通常,在公司内部,您会为工件运行 Nexus 或 Artifactory 服务器。这是放置依赖项的地方,您不需要更多本地路径。