Есть ли прямая ссылка на банку 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.