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

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

20 ответов

Решение

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

При запуске 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>

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

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

(...) Сгенерированный файл JAR будет назван по значению finalName плюс "-источники", если это основные источники. В противном случае это было бы 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 делает с расширенным поиском). Посмотрите этот поиск, например.

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

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 просто загружает источники зависимостей проекта, а не источники плагинов или источники зависимостей, определенные внутри плагинов.

Плагин идеи Maven для IntelliJ Idea позволяет вам указать, следует ли разрешать и загружать исходные тексты и документацию Java.

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

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

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

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

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

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

Если вы используете eclipse, вы можете также открыть "Настройки"> "Maven" и выбрать "Загрузить источники артефактов", это позволит pom.xml не тронуться и сохранить ваши исходные коды или документы Java (если они выбраны) только для разработки прямо на вашем компьютере ~/.m2

В затмении

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

Pre-Реквизит:

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

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

,

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

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

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

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

Снимок экрана: пункт контекстного меню

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

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

Если вы знаете 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/

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

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

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

In IntelliJ IDEA you can download artifact sources automatically while importing by switching on Automatically download Sources option:

SettingsBuild, Execution, DeploymentBuild ToolsMavenImporting

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

Я объясню это, используя демонстрацию "автоконфигурация пружины-загрузчика-привода".

  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-файла с источниками для зависимости, которую вы используете.

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

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

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

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

Если вы используете Eclipse, я бы рекомендовал загрузить как исходный код, так и Javadocs сторонних библиотек.

Щелкните правой кнопкой мыши проект и загрузите оба, как показано на скриншоте ниже.

Загрузка Javadocs означает, что обычно вы можете получить контекстную справку по методам из сторонних библиотек с полезным описанием параметров и т. д. Это важно, если вы плохо знаете библиотеку. В некоторых случаях я обнаружил, что Javadocs доступны, когда исходный код недоступен.

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

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