#maven #gradle #jcenter
Вопрос:
У меня есть проект Java, использующий gradle, в котором используются некоторые очень старые зависимости. У одного из них есть переходная зависимость, которая отлично работает jcenter()
, но теперь терпит неудачу, когда я пытаюсь перейти mavenCentral()
. Артефакт существует в Maven Central, но не имеет файла pom. Gradle выдает мне такую ошибку:
> Could not resolve all files for configuration ':myproject:compileClasspath'.
> Could not find woodstox:wstx-asl:3.2.7.
Searched in the following locations:
- https://repo.maven.apache.org/maven2/woodstox/wstx-asl/3.2.7/wstx-asl-3.2.7.pom
Любая попытка с моей стороны просмотреть репозиторий jcenter возвращает 403 запрещенных, поэтому я не могу сказать, существует ли там файл pom, но каким-то образом Gradle может создать проект с использованием jcenter()
.
Это оставляет меня с несколькими вопросами:
- Требуются ли файлы pom в (очень старых) артефактах maven?
- Как gradle получает доступ к https://jcenter.bintray.com/?
- Есть ли какой-нибудь способ узнать, есть ли у артефакта jcenter файл pom?
- Если у него нет файла pom, почему gradle работает с
jcenter()
ним, но терпит неудачуmavenCentral
?
Заранее спасибо за любую помощь!
Комментарии:
1. Это просто не работает repo.maven.apache.org/maven2/woodstox/wstx-asl/3.2.7 потому что они отсутствуют, что означает сломанные депы из-за отсутствия файлов pom, что означает, что они не могут использоваться другими. Кроме того, бинтрей просто упал. Это означает, что если вы не найдете эти артефакты в другом существующем хранилище, вам, похоже, не повезло…
2. Мне удалось найти файл pom в своем кэше gradle, поэтому я скопировал его в наше репозиторий S3 maven, и это позволило ему снова скомпилироваться. Похоже, проблема в том, что gradle никогда не жаловался, когда jcenter (который был отключен) использовался с —refresh-зависимостями.