Есть ли прямая ссылка на банку eclipse.jdt.core?

Я заметил, что многие проекты помещают jar org.jdt.core в папку lib, потому что он недоступен в репозитории maven. sbt, инструмент сборки, который я использую, может извлечь зависимость прямо из URL. Тем не менее, я не могу найти никаких прямых ссылок на банку на странице загрузки Eclipse. Закрытие, которое я могу найти, является ссылкой на весь jdt zip, который включает в себя множество jar-файлов. Я не верю, что sbt может извлечь банку из zip-зависимости. Есть ли прямая ссылка или какой-то другой обходной путь?

1 ответ

Решение

Зависит от того, находится ли нужная версия в репозитории или нет.

Для org.eclipse.jdt.core:

Проект Tycho, кажется, развертывает некоторые версии org.eclipse.jdt.core к центральному. Увидеть:

http://central.maven.org/maven2/org/eclipse/tycho/org.eclipse.jdt.core/

Я нашел это, используя http://search.maven.org/. Один из них может быть достаточно для ваших нужд. Но у них, похоже, нет "официальных" двоичных файлов, они просто восстанавливаются.

(Обратите внимание, что есть также http://maven.eclipse.org/nexus/index.html, который может быть полезен для некоторых артефактов. Но если кажется, что нет ничего, что могло бы удовлетворить вашу конкретную проблему.)

Для общего случая:

В общем, хотя вы не можете найти все артефакты затмения в репозиториях Maven. Поэтому, если вы не можете найти то, что вы хотите в репозитории Maven, вам нужно найти это в репозиториях Eclipse p2 самостоятельно. Допустим, вы хотите org.eclipse.jdt.core для Eclipse 3.8.1…

На вики-странице http://wiki.eclipse.org/Eclipse_Project_Update_Sites говорится, что сайт обновления 3.8.x

http://download.eclipse.org/eclipse/updates/3.8

На самом деле это "составной" репозиторий p2 для 3.8, 3.8.1, … Так что теперь нам нужно выяснить имя репозитория 3.8.1. Следующее извлекает файл JAR, содержащий compositeArtifacts.xml, который перечисляет дочерние репозитории и greps для 3.8.1:

curl -s http://download.eclipse.org/eclipse/updates/3.8/compositeArtifacts.jar | \
  gunzip -c | \
  grep '3\.8\.1'

Результат?

<child location='R-3.8.1-201209141540'/>

Это место является относительным путем. Он говорит нам, что хранилище 3.8.1 находится на

http://download.eclipse.org/eclipse/updates/3.8/R-3.8.1-201209141540/

Теперь, чтобы получить индекс артефакта для этого хранилища. Опять же, один XML-файл в банке. Но на этот раз это не составной репозиторий, поэтому мы просто просим artifacts.jar:

curl -s http://download.eclipse.org/eclipse/updates/3.8/R-3.8.1-201209141540/artifacts.jar | \
  gunzip -c | \
  grep org.eclipse.jdt.core[\'\"] | \
  sort -u

Результат:

<artifact classifier='osgi.bundle' id='org.eclipse.jdt.core' version='3.8.2.v20120814-155456'>

(Я не уверен почему org.eclipse.jdt.core в 3.8.1 есть версия, начинающаяся с 3.8.2, но это так. Давай давить на…)

Так что теперь мы можем сшить URL в соответствии с <mappings> элемент в artifacts.xml, который мы только что получили. Добавьте 'plugins /' в путь к репозиторию; добавьте версию к имени плагина, и тогда мы сможем получить ее:

curl -Os http://download.eclipse.org/eclipse/updates/3.8/R-3.8.1-201209141540/plugins/org.eclipse.jdt.core_3.8.2.v20120814-155456.jar

Если вам понадобится больше, чем один или два jar-файла, вы можете использовать Tycho или задачи Eclipse p2 Ant для устранения необходимых артефактов в папке lib перед запуском сборки sbt.

Другие вопросы по тегам