Я хочу создать артефакт для проекта, используя последний код в зависимых от серии подмодулях, например, я хочу создать артефакт из модуля mod_b
, используя последнюю версию кода модуля mod_a
. Однако, если есть проблема с mod_a
, мне нужно создать версию mod_b
, используя последнюю известную исправную версию mod_a
, например, заменив версию из репозитория Maven.
Я думаю о создании пользовательской конфигурации со стратегией пользовательского разрешения:
configurations {
pinnedImplementation.extendsFrom(implementation)
}
configurations.all {
resolutionStrategy.dependencySubstitution {
substitute project(':mod_a') with module('com.example:mod_a:1.+')
}
}
Теперь я могу создать 2 версии подмодуля mod_b
:
// if everything is ok with mod_a and mod_b, we will publish from this project
project(":mod_b") {
dependencies {
implementation project(':mod_a')
}
}
// we want to build and publish from this project only if project(":mod_b") fails to build/test using latest version of project(":mod_a")
project(":mod_b_pinned") {
dependencies {
// this will swap out project(':mod_a') for "implementation 'com.example:mod_a:1.+'"
pinnedImplementation project(':mod_a')
}
}
Есть ли способ получить задачи в project(":mod_b_pinned")
, игнорируемые или пропущенные в зависимости от состояния задач в project(":mod_b")
? Есть ли способ связать два проекта, используя зависимости lib проекта, но не импортируя артефакты project(":mod_b")
в project(":mod_b_pinned")
classpath? Или есть другая альтернатива?