У меня есть рабочая область с несколькими независимо клонированными репозиториями Gradle, и все они должны использовать одну и ту же версию исправления Java (21.0.9-tem) для воспроизводимых сборок:
Цепочки инструментов Gradle: Gradle поддерживает указание основной версии Java, но я не могу напрямую указать версию исправления, например 21.0.9. Например:
Это означает, что Gradle может автоматически предоставлять такие версии, как 21.0.5 или 21.0.11, что может нарушить воспроизводимость.
SDKMAN: не распространяет настройки .sdkmanrc в подкаталоги. Таким образом, размещение .sdkmanrc в корневой рабочей области/ не работает для таких подкаталогов, как repo-a, repo-b и т. д.
Что я пробовал:
Копирование .sdkmanrc в каждый репозиторий: Это работает, но его утомительно поддерживать.
Глобальная установка Java 21.0.9-tem через SDK по умолчанию: это работает, но жертвует изоляцией проекта.
Рассмотрение специального плагина Gradle: кажется слишком сложным решением для такого простого варианта использования.
Требования:
Точная версия Java 21.0.9 (обнаружены ошибки в других версиях исправлений).
Должен работать для команд ./gradlew в любом каталоге репозитория.
У меня есть рабочая область с несколькими независимо клонированными репозиториями Gradle, и все они должны использовать одну и ту же версию исправления Java (21.0.9-tem) для воспроизводимых сборок: [code]workspace/ ├── repo-a/ │ ├── build.gradle │ └── gradlew ├── repo-b/ │ ├── build.gradle │ └── gradlew └── repo-c/ │ ├── build.gradle │ └── gradlew [/code] Проблема: [list] [*][b]Цепочки инструментов Gradle[/b]: Gradle поддерживает указание основной версии Java, но я не могу напрямую указать версию исправления, например 21.0.9. Например: [code]java { toolchain { languageVersion.set(JavaLanguageVersion.of(21)) vendor.set(JvmVendorSpec.ADOPTIUM) } } [/code] Это означает, что Gradle может автоматически предоставлять такие версии, как 21.0.5 или 21.0.11, что может нарушить воспроизводимость.
[*][b]SDKMAN[/b]: не распространяет настройки .sdkmanrc в подкаталоги. Таким образом, размещение .sdkmanrc в корневой рабочей области/ не работает для таких подкаталогов, как repo-a, repo-b и т. д.
[/list] Что я пробовал: [list] [*][b]Копирование .sdkmanrc в каждый репозиторий[/b]: Это работает, но его утомительно поддерживать.
[*][b]Глобальная установка Java 21.0.9-tem через SDK по умолчанию[/b]: это работает, но жертвует изоляцией проекта.
[*][b]Рассмотрение специального плагина Gradle[/b]: кажется слишком сложным решением для такого простого варианта использования.
[/list] Требования: [list] [*]Точная версия Java 21.0.9 (обнаружены ошибки в других версиях исправлений).
[*]Должен работать для команд ./gradlew в любом каталоге репозитория.