it-swarm.com.ru

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

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

421
Ioan Alexandru Cucu

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

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

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

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

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

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

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

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

764
Alain O'Dea

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

Если проект создает банку с исходными файлами проекта и развертывает его в репозитории 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 делает это с расширенным поиском). Смотрите этот поиск например.

33
Pascal Thivent

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

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

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

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

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

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

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

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

13
Maddin

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

11
Stefan De Boey

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

9
Gabriel Ramirez

В Затмении

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

Предварительные условия:

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

6
bondkn

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

 enter image description here .

4
Witold Kaczurba

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

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

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

 screen shot of context-menu item "Download Sources" being chosen in a NetBeans 8 project driven by Maven

3
Basil Bourque

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

3
Bozho

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

Я закончил тем, что использовал подход @ GabrielRamierez , но буду использовать подход @ PascalThivent в будущем. 

2
eebbesen

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

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

1
eeezyy

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

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

 enter image description here

1
senninha

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

0
atom88