Отримайте вихідні JAR з сховища Maven


Відповіді:


785

Maven Micro-Tip: Отримайте джерела та Javadocs

Під час використання Maven в IDE часто виникає потреба у вашому IDE для вирішення вихідного коду, а Javadocs для залежностей від вашої бібліотеки. Існує простий спосіб досягти цієї мети.

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

Перша команда спробує завантажити вихідний код для кожної із залежностей у вашому пом-файлі.

Друга команда спробує завантажити Javadocs.

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

Якщо у вас дуже багато залежностей, можливо, також буде корисно використовувати включення / виключення для отримання конкретних артефактів, наступна команда, наприклад, завантажує лише джерела для залежності з конкретним артефактомId:

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
Якщо ви використовуєте затемнення, може бути корисним також зробити "mvn eclipse: eclipse" після цього, а потім оновити проект у затемненні - це позбавить вас від ручного приєднання джерел до кожного файлу.
unigeek

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

2
Після того, як mvn dependency:resolve -Dclassifier=javadocIntelliJ IDEA автоматично помічає javadocs, що дуже приємно.
Jonik

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, куди буде завантажено джерело, чи буде він приєднаний до проекту сам або десь ще?
Жаске

1
Він буде завантажений як jar у ваш, M2_REPOяк xxxx-yy-source.jar, у тому самому місці, що і звичайний jar. Він додається як вихідний код для банку xxxx-yy в бібліотеках
RobAu

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

36

Якщо проект створює банку з джерелами проекту та розгортає його у сховище Maven, тоді ви знайдете його :)

Тільки FYI, артефакти джерел, як правило, створюються плагіном maven-source . Цей плагін може з'єднати основні або тестові джерела проекту в архів jar і, як пояснено в Налаштування джерела плагіну :

(...) Створений файл jar буде названий значенням finalName"-sources", якщо воно є основними джерелами. Інакше було б finalNameплюс "-test-source", якщо це джерела тестування.

Додатковий текст був наданий для опису артефакту ("-sources" або "-test-source" тут) називається класифікатором.

Щоб оголосити залежність від артефакту, який використовує класифікатор, просто додайте <classifier>елемент. Наприклад:

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

Зауважте, що ви зазвичай цього не робите, більшість IDE надають підтримку для завантаження джерел (та / або JavaDoc) з основного артефакту, не заявляючи прямо про залежність від них.

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


18

The Maven ідеї плагіна для IntelliJ Idea дозволяє вказати , чи повинні бути дозволені і завантажити джерела і яву документ

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

Замість того, щоб завантажувати джерела для всіх залежностей, чи можна завантажити лише деякі залежності, вказавши їх у пам’яті разом із самою залежністю, може b через якийсь внутрішній тег у тегу залежності чи щось подібне?
nanosoft

Цей плагін вийшов на пенсію
kiltek

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

Замість того, щоб завантажувати джерела для всіх залежностей, чи можна завантажити лише деякі залежності, вказавши їх у пам’яті разом із самою залежністю, може b через якийсь внутрішній тег у тегу залежності чи щось подібне?
nanosoft

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, з репо репортажу завантажуються лише Документи зі сплячки , а не Весна . Тоді я заходжу за посиланням u та надав & переходив @ mrembisz та вносив зміни до уподобань Maven & працює як шарм. Я отримую Весняні документи . @Stefan De Boey Дякую за те, що поділився цим. +1.
OO7

9

якщо ви використовуєте затемнення, ви також можете відкрити Налаштування> Maven та вибрати Завантажити джерела артефакту, це дозволить пам’яті pom.xml зберегти та зберегти ваші джерела або документи Java (якщо вибрано) лише для розробки прямо у вашому розташуванні машини ~ / .m2


7

У затемненні

  1. Клацніть правою кнопкою миші на pom.xml
  2. Виберіть Run As-> Maven generate-sources
    це створить джерело за замовчуванням у папці .m2

Попередня умова:

Maven слід налаштувати за допомогою Eclipse.


1
Відповідає на інше запитання. Це питання стосується завантаження джерел JAR, а не їх генерування.
Стівен C

5

У затемненні - натисніть на проект потім:

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


Я скасував "завантажувати джерела артефактів" при налаштуванні затемнення Maven, тому завантажую лише банку. Але останнє, я намагався використовувати це рішення для завантаження джерела, воно не вдалося без жодного повідомлення. Я видалив папку jar в локальному сховищі Maven і знову завантажую банку, після чого джерельний jar успішно завантажував. Я думаю, це тому, що в локальному сховищі Maven є банка, тому я не можу використовувати цей метод для завантаження джерела.
відвертий

4

Ви можете, якщо вони завантажені. Зазвичай їх називають "framename-version-source (s)"


4

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

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

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

знімок екрана пункту контекстного меню "Джерела завантаження", обраного у проекті NetBeans 8, керованим Maven


3

На основі перегляду консолі Maven в Eclipse (Kepler) джерела будуть автоматично завантажуватись для залежності Maven, якщо ви спробуєте відкрити клас із зазначеної залежності Maven в редакторі, для якого ви вже не завантажували джерела. Це зручно, коли ви не хочете захопити джерело для всіх ваших залежностей, але не знаєте, які саме ви хочете достроково (і ви використовуєте Eclipse).

Я в кінцевому підсумку використовував підхід @ Габріеля Рамієреса , але буду використовувати підхід @ 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. Оскільки я працював над іншим проектом, я побачив, що можна працювати з затемненням, але без плагіну Maven-eclipse. Це полегшує використання в різних середовищах і дозволяє легко використовувати Maven при затемненні. І це без зміни pom.xml-файла.

Отже, я рекомендую підхід Габріеля Раміреса.


0

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


0

Репозиторії Maven забезпечують простий спосіб завантаження банку з джерелами.

Я поясню це, використовуючи демонстрацію для "spring-boot-actuator-autoconfigure".

  1. Перейти до сховища Maven - https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-actuator-autoconfigure
  2. На сторінці перелічені різні версії. Клацніть на потрібний, скажімо, 2.1.6. РЕЛІЗ - 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.РЕЛІЗА-джерела.jar

В іншому випадку ви завжди можете "git clone" repo з github, якщо його є і отримати конкретний код.

Як пояснили інші, ви можете використовувати "mvn залежність: джерела" команду get і gene izvor джерело для залежності, яку ви використовуєте.

Примітка: Деякі залежності не матимуть source.jar, оскільки в них немає вихідного коду, а файл pom. наприклад, привід пружинного завантаження . Як і в цьому випадку:

Стартові POM - це набір зручних дескрипторів залежності, які ви можете включити у свою заявку. Ви отримуєте «єдину зупинку» за всіма необхідними Весняними та супутніми технологіями, не потребуючи пошуку за зразком коду та копіювання навантажень на пасти дескрипторів залежності.

Довідка: Вступ до стартерів Spring Boot


0

У IntelliJ IDEA ви можете автоматично завантажувати джерела артефактів під час імпорту, включивши опцію Автоматично завантажувати джерела:

SettingsBuild, Execution, DeploymentBuild ToolsMavenImporting

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


0

Якщо ви хочете знайти файл вихідного банку для будь-якого з артефактів вручну, перейдіть до місця зберігання сховища Maven для конкретного артефакту та у файлах натисніть «переглянути всі». Ви можете знайти вихідний файл jar.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.