Получить исходные файлы JAR из репозитория Maven


440

У кого-нибудь есть идеи, можете ли вы найти исходные JAR-файлы в репозиториях Maven?


В Idea щелчок правой кнопкой мыши по зависимости в окне инструментов Maven делает волшебство. czak.pl/images/posts/gwt-with-idea-ce/download-sources.png
Гаян Виракутти

Ответы:


785

Maven Micro-Tip: Получить источники и Javadocs

Когда вы используете Maven в IDE, вы часто обнаруживаете необходимость в вашей IDE для разрешения исходного кода и Javadocs для ваших библиотечных зависимостей. Есть простой способ достичь этой цели.

mvn dependency:sources
mvn dependency:resolve -Dclassifier=javadoc

Первая команда попытается загрузить исходный код для каждой из зависимостей в вашем файле pom.

Вторая команда попытается загрузить Javadocs.

Мейвен во власти библиотечных упаковщиков здесь. Таким образом, у некоторых из них не будет упакованного исходного кода, а у многих из них не будет Javadocs.

В случае, если у вас много зависимостей, было бы также неплохо использовать включения / исключения для получения определенных артефактов, например, следующая команда будет загружать только источники для зависимости с определенным artifactId:

mvn dependency:sources -DincludeArtifactIds=guava

Источник: http://tedwise.com/2010/01/27/maven-micro-tip-get-sources-and-javadocs/

Документация: https://maven.apache.org/plugins/maven-dependency-plugin/sources-mojo.html


10
Куда они кладут их после загрузки?
Джеймс Мур

15
Он помещает их в тот же каталог, что и двоичные JAR-файлы в M2_HOME.
Ален О'Ди

19
Если вы используете eclipse, может быть полезно потом выполнить mvn eclipse: eclipse и затем обновить ваш проект в eclipse - это избавит вас от ручного присоединения источников к каждому файлу.
unigeek

1
Я не могу найти источники и javadocs после их загрузки. Я проверил каждый каталог в M2_HOME
Патрик Кирнан

2
После mvn dependency:resolve -Dclassifier=javadocIntelliJ IDEA автоматически замечает javadocs, что очень приятно.
Джоник

89

Настройка и запуск плагина maven-eclipse (например, из командной строки mvn eclipse:eclipse)

   <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-eclipse-plugin</artifactId>
                <configuration>
                    <downloadSources>true</downloadSources>
                    <downloadJavadocs>true</downloadJavadocs>
                </configuration>
            </plugin>
        </plugins>
    </build>

Что вы имеете в виду? Вы имеете в виду, что исходники и документы загружаются при запуске, mvn eclipse:eclipseесли вы добавляете это в файл POM?
Лий

3
Да. Просто как тот.
RobAu

@RobAu, куда будет загружаться исходный код, будет ли он прикреплен к самому проекту или где-то еще?
Jaskey

1
Он будет загружен как jar, M2_REPOкак xxxx-yy-sources.jar, в том же месте, что и обычный jar. Он будет прикреплен в виде исходного кода для xxxx-yy jar в библиотеках
RobAu

1
@KanagaveluSugumar вам нужно добавить M2_REPO для затмения, а затем просто обновить проект.
RobAu

36

Если проект создает банку с исходными файлами проекта и развертывает его в репозитории maven, то вы найдете его :)

Просто к сведению, исходные артефакты обычно создаются с помощью maven-source-plugin . Этот плагин может объединить основные или тестовые источники проекта в jar-архив и, как описано в разделе «Настройка исходного плагина» :

(...) Сгенерированный jar-файл будет назван по значению finalNameплюса "-sources", если это основные источники. В противном случае это будет finalNameплюс "-test-sources", если это тестовые источники.

Дополнительный текст был дан для описания артефакта («-sources» или «-test-sources» здесь) называется классификатором.

Чтобы объявить зависимость от артефакта, который использует классификатор, просто добавьте <classifier>элемент. Например:

<dependency>
  <groupId>org.hibernate</groupId>
  <artifactId>hibernate</artifactId>
  <version>3.2.7.ga</version>
  <classifier>sources</classifier>
</dependency>

Обратите внимание, что обычно вы этого не делаете, большинство IDE предоставляют поддержку для загрузки источников (и / или JavaDoc) из основного артефакта без явного объявления зависимости от них.

Наконец, также обратите внимание, что некоторые поисковые системы хранилища позволяют искать артефакты с использованием классификатора (по крайней мере, Nexus делает с расширенным поиском). Посмотрите этот поиск, например.


18

Maven идеи плагина для IntelliJ Idea позволяет указать , должны ли быть разрешены и загрузить источники и яву документ

mvn idea:idea -DdownloadSources=true -DdownloadJavadocs=true

Вместо того, чтобы загружать источники для всех зависимостей, можно ли загрузить только некоторые зависимости, указав их в pom вместе с самой зависимостью, может b через некоторый внутренний тег в теге зависимостей или что-то подобное?
Нанософт

Этот плагин вышел в отставку
килтек

18

Чтобы скачать какой-то конкретный источник или javadoc, нам нужно включить GroupIds - значение через запятую, как показано ниже

mvn dependency:sources -DincludeGroupIds=com.jcraft,org.testng -Dclassifier=sources

Обратите внимание, что классификатор не разделен запятыми, чтобы скачать javadoc, нам нужно еще раз запустить приведенную выше команду с классификатором как javadoc.

mvn dependency:sources -DincludeGroupIds=com.jcraft,org.testng -Dclassifier=javadoc

Вместо того, чтобы загружать источники для всех зависимостей, можно ли загрузить только некоторые зависимости, указав их в pom вместе с самой зависимостью, может b через некоторый внутренний тег в теге зависимостей или что-то подобное?
Нанософт

14

Для загрузки любого артефакта используйте

mvn dependency:get -Dartifact=groupId:artifactId:version:packaging:classifier

Для Groovy источников это будет

mvn dependency:get -Dartifact=org.codehaus.groovy:groovy-all:2.4.6:jar:sources

Для javadoc Groovy вы бы использовали

mvn dependency:get -Dartifact=org.codehaus.groovy:groovy-all:2.4.6:jar:javadoc

Это помещает данный артефакт в ваш локальный репозиторий Maven, то есть обычно $HOME/.m2/repository.

dependency:sources просто загружает источники зависимостей проекта, а не источники плагинов или источники зависимостей, определенные внутри плагинов.


12

Вы можете найти информацию в этом связанном вопросе: Получить исходные jar-файлы, прикрепленные к Eclipse для зависимостей, управляемых Maven,
если вы используете плагин eclipse maven, то используйте «mvn eclipse: eclipse -DdownloadSources = true»


Это единственное решение, которое сработало для меня. Я использую Eclipse Kepler. Так как это делает правильные ссылки в .classpath . Как следующее:
aspdeepak

<classpathentry kind = "var" path = "M2_REPO / redis / clients / jedis / 2.6.0 / jedis-2.6.0.jar" sourcepath = "M2_REPO / redis / clients / jedis / 2.6.0 / jedis-2.6.0 -sources.jar ">
aspdeepak

Когда я следил за ответом @ RobAu, из репозитория загружаются только документы Hibernate , а не Spring . Затем я захожу по ссылке, которую вы предоставили и следовали за @ mrembisz, и вносил изменения в предпочтения Maven и работает как шарм. Я получаю Spring Docs . @Stefan De Boey Спасибо, что поделились этим. +1.
OO7

9

если вы используете eclipse, вы также можете открыть Preferences> Maven и выбрать Download Artifact Sources, это позволит pom.xml не тронуться и сохранить ваши исходники или документы Java (если они выбраны) только для разработки прямо на вашем компьютере ~ / .m2


7

В затмении

  1. Щелкните правой кнопкой мыши на pom.xml
  2. Выберите Run As-> Maven generate-sources
    он будет генерировать источник по умолчанию в папке .m2

Pre-Реквизит:

Maven должен быть настроен с Eclipse.


1
Отвечает на другой вопрос. Этот вопрос касается загрузки файлов JAR, а не их генерации.
Стивен С.

5

В затмении - нажмите на проект, затем:

введите описание изображения здесь,


Я снял флажок «скачивать источники артефактов» в настройках Eclipse Maven, поэтому он скачивал только банку. Но последнее, я пытался использовать это решение для загрузки исходного кода, оно не удалось без каких-либо сообщений. Я удалил папку jar в локальном репозитории maven и снова загрузил jar, после чего исходный файл jar загрузился успешно. Я думаю, это потому, что в локальном репозитории maven есть jar, поэтому я не могу использовать этот метод для загрузки исходного кода.
откровенно

4

Вы можете, если они загружены. Обычно они называются "frameworkname-version-source (source)"


4

NetBeans, контекстный клик

В NetBeans 8 с проектом, управляемым Maven, просто щелкните по контексту элемент списка файлов jar той зависимости, которая вас интересует. выбиратьDownload Sources . Подождите немного, и NetBeans автоматически загрузит и установит исходный код, если он доступен.

Точно так же вы можете выбрать, Download Javadocчтобы документ был установлен локально. Затем вы можете щелкнуть по контексту некоторый код в редакторе и выбрать просмотр JavaDoc.

снимок экрана с пунктом контекстного меню "Загрузка источников", выбранным в проекте NetBeans 8, управляемом Maven


3

Основываясь на просмотре консоли Maven в Eclipse (Kepler), исходные файлы будут автоматически загружаться для зависимости Maven, если вы попытаетесь открыть класс из указанной зависимости Maven в редакторе, для которого у вас еще не загружены исходные коды. Это удобно, когда вы не хотите получать исходные тексты для всех ваших зависимостей, но не знаете, какие из них вы хотите заблаговременно (и вы используете Eclipse).

В итоге я использовал подход @ GabrielRamierez , но в дальнейшем буду использовать подход @ PascalThivent .


2

Если вы знаете groupId и aritifactId , вы можете сгенерировать URL-адрес для загрузки следующим образом.

    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>1.2.3</version>
    </dependency>

http://central.maven.org/maven2/ch/qos/logback/logback-classic/

и вы получите страницу, подобную этой, выберите нужную версию, просто наслаждайтесь! введите описание изображения здесь

введите описание изображения здесь


1

Я также использовал плагин eclipse, чтобы поместить проект в рабочую область eclipse. Так как я работал над другим проектом, я увидел, что можно работать с eclipse, но без maven-eclipse-plugin. Это облегчает использование в различных средах и позволяет легко использовать maven поверх затмения. И это без изменения pom.xml-файла.

Итак, я рекомендую подход Габриэля Рамиреса.


0

Для отладки вы также можете использовать «Java Decompiler», такой как: JAD и декомпилировать исходный код на лету (хотя сгенерированный исходный код никогда не совпадает с исходным). Затем установите JAD в качестве плагина в Eclipse или вашей любимой IDE.


0

Репозитории Maven предоставляют простой способ загрузки исходных файлов jar.

Я объясню это, используя демонстрацию для «spring-boot-actator-autoconfigure».

  1. Перейдите в репозиторий Maven - https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-actuator-autoconfigure.
  2. На странице перечислены различные версии. Нажмите на нужный, скажем, 2.1.6.RELEASE - https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-actuator-autoconfigure/2.1.6.RELEASE
  3. На странице есть ссылка «Просмотреть все» рядом с «Файлы». Нажмите на нее - https://repo1.maven.org/maven2/org/springframework/boot/spring-boot-actuator-autoconfigure/2.1.6.RELEASE/
  4. На странице перечислены различные файлы, в том числе один для источников - https://repo1.maven.org/maven2/org/springframework/boot/spring-boot-actuator-autoconfigure/2.1.6.RELEASE/spring-boot-actuator-autoconfigure -2.1.6.RELEASE-sources.jar

В противном случае, вы всегда можете "git clone" репозиторий из github, если его там и получить конкретный код.

Как объясняли другие, вы можете использовать команду «mvn dependency: sources» для получения и генерации jar-файлов для используемой зависимости.

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

Начальные POM - это набор удобных дескрипторов зависимостей, которые вы можете включить в свое приложение. Вы получаете универсальное решение для всех необходимых вам Spring и связанных с ними технологий, без необходимости искать примеры кода и копировать множество дескрипторов зависимостей.

Ссылка: Введение в Spring Boot Starters


0

В IntelliJ IDEA вы можете автоматически загружать источники артефактов при импорте, включив параметр «Автоматически загружать источники»:

SettingsBuild, Execution, DeploymentBuild ToolsMavenImporting

введите описание изображения здесь


0

Если вы хотите найти исходный файл jar для любого из артефактов вручную, перейдите в местоположение репозитория maven для конкретного артефакта и в «Файлах» нажмите «просмотреть все». Вы можете найти исходный файл JAR.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.