#java #gradle
#java #градация
Вопрос:
У меня есть проект Java, управляемый с помощью gradle, с удаленной зависимостью, разрешенной через репозиторий.
implementation 'org.company:very-big-dependency:2.7.1'
Я хочу клонировать эту зависимость, поработать над локальным проектом и внедрить новую функцию.
Есть ли способ заставить gradle захватить зависимость от local, как это было сделано из репозитория?
Я попытался включить проект в свой settings.gradle
include ':app', ":very-big-dependency"
project(':very-big-dependency').projectDir = new File(settingsDir, '../../very-big-dependency')
и определил зависимость от моего build.gradle
dependencies {
...
implementation project(':very-big-dependency')
но когда я запускаю build
gradle, он жалуется, что не может найти подпроект зависимости
A problem occurred evaluating script.
> Project with path ':sub-project' could not be found in project
Поскольку проект был собран правильно, когда он был разрешен через репозиторий, это говорит мне о том, что gradle ведет себя по-другому при создании локального проекта.
Проект зависимости строится правильно при вызове собственного сценария сборки на локальном клоне, тесты проходят, и все в порядке.
Есть ли что-нибудь еще, что мне нужно рассказать gradle в моем проекте? Нужно ли мне делать что-то еще с локальной зависимостью? Нужно ли мне создавать jar каждый раз, когда я хочу это протестировать?
Примечания:
- Никакая среда IDE не используется для обработки этого
- Проект был создан с помощью
gradle init
- Я попытался импортировать
:sub-project
, просто чтобы получить:
A problem occurred configuring project ':very-big-dependency'.
> Could not get unknown property 'compileJava' for project ':sub-project' of type org.gradle.api.Project.
- Я пытался добавить
flatDir
вrepositories
, но это ни к чему не привело.
Комментарии:
1. Этот вопрос серьезно нуждается в четком и рабочем ответе
Ответ №1:
Вы могли бы попробовать includeBuild
dependencySubstitution
in settings.gradle
.
// include local clone of the library
includeBuild('../../very-big-dependency') {
dependencySubstitution {
// substitute remote dependency with local module
substitute module('org.company:very-big-dependency') with project(':very-big-dependency')
}
}
Дополнительную информацию см. в руководстве.
Комментарии:
1. Правильно ли задан у вас путь? вы проверили руководство для получения дополнительной информации?
2. пришлось изменить его на
with project(':')
.