Как получить источники зависимостей maven и распаковать их в указанный каталог?

Пока я комбинирую maven и vim, я не могу найти способ загрузить все источники, которые зависят от моего проекта, в указанный каталог и распаковать их вместе.

Так что я могу легко создавать tags.

Кто-нибудь знает как?


person jackalope    schedule 18.01.2013    source источник
comment
Возможно, этот ответ поможет загрузить исходники. Исходники будут размещены в репозитории maven по умолчанию (~ / .m2 / repository /).   -  person Stephan    schedule 18.01.2013


Ответы (1)


Для загрузите источники и предоставьте вам список доступных исходных файлов jar (некоторые из ваших зависимостей могут не иметь доступных источников).

Плагин зависимостей также может загружать исходники, но получить список необходимых jar-файлов сложнее.

Вы можете попробовать что-то вроде этого:

dir=target/sources
mkdir -p $dir
mvn eclipse:eclipse -DdownloadSources
sed -rn '/sourcepath/{s/.*sourcepath="M2_REPO.([^"]*).*/\1/;p}' .classpath | \
  (cd $dir && xargs -i jar xf ~/.m2/repository/{})

Это запустит mvn eclipse:eclipse -DdownloadSources, который загрузит исходники и запишет .classpath файл в локальный каталог. Этот файл содержит пути к вашим исходным jar-файлам. Это выглядит примерно так:

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
  <classpathentry kind="src" path="src/main/java" including="**/*.java"/>
  <classpathentry kind="output" path="target/classes"/>
  <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
  <classpathentry kind="var" path="M2_REPO/net/sourceforge/findbugs/jsr305/1.3.7/jsr305-1.3.7.jar"/>
  <classpathentry kind="var" path="M2_REPO/net/jcip/jcip-annotations/1.0/jcip-annotations-1.0.jar" sourcepath="M2_REPO/net/jcip/jcip-annotations/1.0/jcip-annotations-1.0-sources.jar"/>
</classpath>

В моем примере вы можете видеть, что есть источники для jar-файла с аннотациями JCIP, но не для jar-файла FindBugs JSR305.

Команда sed извлекает пути к исходным jar-файлам (относительно вашего локального репозитория maven). Затем команда xargs распаковывает каждый исходный jar-файл в $dir.

Плагин eclipse создает файлы .classpath и .project и каталог .settings - вы можете удалить их, если никогда не используете Eclipse.

person Martin Ellis    schedule 18.01.2013
comment
но я использую maven + vim, без ide. - person jackalope; 18.01.2013
comment
Я это понимаю. Ответ, который я дал, не требует Eclipse - maven-eclipse-plugin - это просто плагин maven, который записывает несколько файлов, которые может прочитать Eclipse. Пожалуйста, дайте команды, которые я попробовал - для этого вам не нужен Eclipse. - person Martin Ellis; 18.01.2013
comment
удивительно, именно то, что я искал, я бы добавил в конце команды ctags -R --languages=java ., чтобы навигация по коду работала с помощью ctrl +] - person Mitermayer Reis; 09.09.2013