我正在使用AS和Gradle为Android构建一个mutli-module库。每个模块独立发布到Artifactory仓库,但作为完整版本号同步,每个模块具有相同的版本号(例如,完整库版本为1.2.1,然后每个模块重新发布为1.2.1,以使该版本保持同步)。
问题是我正在尝试与Gradle一起自动化所有这些库的发布版本和发布,但每个模块都依赖于一个保存共享逻辑的“核心”模块。当我尝试使用核心模块作为提供的依赖项创建这些gradle构建任务时会出现问题,例如:
provided 'xyz.abc.mylib-core:' + version
版本是共享版本。我做了一个gradle任务,执行每个库的清理,发布构建,测试和发布的每个步骤,如下所示:
task artifactoryPublishMyLibCore(dependsOn: [':mylib-core:clean',
':mylib-core:test',
':mylib-core:jacocoTestReport',
':mylib-core:sonarRunner',
':mylib-core:assembleRelease',
':mylib-core:artifactoryPublish'])
task artifactoryPublishMyLibModule1(dependsOn:
['artifactoryPublishMyLibCore', ':mylib-module1:clean',
':mylib-module1:test',
':mylib-module1:jacocoTestReport',
':mylib-module1:sonarRunner',
':mylib-module1:assembleRelease',
':mylib-module1:artifactoryPublish'
])
现在尝试同步gradle时会出现问题
Error:Failed to resolve: xyz.abc.mylib-core:1.2.1
这是公平的,因为此时库尚未发布,但是当构建任务运行时,它将在需要时发布,并且我在每个库中使用core作为“提供的”运行时依赖项这些模块因此不需要(据我所知)编译每个模块。
我错过了一些明显的东西,如果没有,有办法:
或
任何和所有帮助表示赞赏。
编辑:请注意,这不是调试的问题,因为我在执行debugCompile时将模块作为项目依赖项包含在内,只有在尝试执行必须为Artifactory正确引用依赖项的版本时才会这样做。