В gradle артефакт maven без файла pom работает из jcenter, но не из MavenCentral

#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() .

Это оставляет меня с несколькими вопросами:

  1. Требуются ли файлы pom в (очень старых) артефактах maven?
  2. Как gradle получает доступ к https://jcenter.bintray.com/?
  3. Есть ли какой-нибудь способ узнать, есть ли у артефакта jcenter файл pom?
  4. Если у него нет файла 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-зависимостями.