TL;DR
Я пытаюсь настроить два проекта Gradle таким образом, чтобы один проект использовал файлы, созданные другим. Первый проект добавляется ко второму с помощью includeBuild
, и файл определяется во втором проекте как зависимость.
Проект testA
settings.gradle
:
rootProject.name = 'testA'
build.gradle
:
group = 'org.test'
version = '0.0.0.1_test'
task someZip (type: Zip) {
from './settings.gradle'
archiveName = 'xxx.zip'
destinationDir = file("${buildDir}/test")
}
artifacts {
//TODO add something here?
}
Проект testB
settings.gradle
:
rootProject.name = 'testB'
if (System.getenv('LOCAL_COMPILATION') == 'true') {
includeBuild '../testA'
}
build.gradle
:
if (System.getenv('LOCAL_COMPILATION') != 'true') {
repositories {
maven { url '192.168.1.100' }
}
}
configurations {
magic
}
dependencies {
magic 'org.test:xxx:0.0.0.+@zip'
}
task ultimateZip (type: Zip) {
from configurations.magic
archiveName = 'ultimate.zip'
destinationDir = file("${buildDir}/ultimate-test")
}
Описание
Вы могли заметить, что в примере есть возможность использовать репозиторий maven. Я хотел подчеркнуть, что в конечном итоге появится возможность сделать это. Использование репозитория Maven не является целью этого вопроса, за исключением того, что решение не должно мешать этому. (Другими словами, вы можете предположить, что System.getenv('LOCAL_COMPILATION') == 'true'
.)
Вопрос в том, как определить артефакт таким образом, чтобы другой проект смог его распознать.
Предпочтительное решение должно быть похоже на то, что делает плагин Java, потому что я использую зависимости jar в своих проектах, и они работают как через includeBuild
, так и через репозиторий.