Хтось має ідею, чи можете ви знайти джерела JAR у сховищах Maven?
Хтось має ідею, чи можете ви знайти джерела JAR у сховищах Maven?
Відповіді:
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
mvn dependency:resolve -Dclassifier=javadoc
IntelliJ IDEA автоматично помічає javadocs, що дуже приємно.
Налаштування та запуск модуля 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?
M2_REPO
як xxxx-yy-source.jar, у тому самому місці, що і звичайний jar. Він додається як вихідний код для банку xxxx-yy в бібліотеках
Якщо проект створює банку з джерелами проекту та розгортає його у сховище 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 робить це при розширеному пошуку). Дивіться, наприклад, цей пошук .
The Maven ідеї плагіна для IntelliJ Idea дозволяє вказати , чи повинні бути дозволені і завантажити джерела і яву документ
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
Для завантаження будь-якого артефакту використовуйте
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
просто завантажує джерела залежностей проекту, а не джерела плагінів та джерела залежностей, визначені всередині плагінів.
Ви можете знайти інформацію в цьому пов'язаному питанні: Отримайте вихідні файли jar, приєднані до Eclipse для Maven-керованих залежностей,
якщо ви використовуєте плагін eclipse Maven, тоді використовуйте 'mvn eclipse: eclipse -DdownloadSources = true'
якщо ви використовуєте затемнення, ви також можете відкрити Налаштування> Maven та вибрати Завантажити джерела артефакту, це дозволить пам’яті pom.xml зберегти та зберегти ваші джерела або документи Java (якщо вибрано) лише для розробки прямо у вашому розташуванні машини ~ / .m2
У затемненні
pom.xml
Run As
-> Maven generate-sources
Попередня умова:
Maven слід налаштувати за допомогою Eclipse.
У NetBeans 8 із проектом, керованим Maven, просто натисніть на контекстний елемент списку файлів jar залежно від того, в якому ви зацікавлені. Виберіть Download Sources
. Зачекайте мить, і NetBeans автоматично завантажить та встановить вихідний код, якщо такий є.
Так само ви можете вибрати, Download Javadoc
щоб отримати документ локально. Потім ви можете контекстно натиснути на якийсь код у редакторі та вибрати, щоб побачити JavaDoc.
На основі перегляду консолі Maven в Eclipse (Kepler) джерела будуть автоматично завантажуватись для залежності Maven, якщо ви спробуєте відкрити клас із зазначеної залежності Maven в редакторі, для якого ви вже не завантажували джерела. Це зручно, коли ви не хочете захопити джерело для всіх ваших залежностей, але не знаєте, які саме ви хочете достроково (і ви використовуєте Eclipse).
Я в кінцевому підсумку використовував підхід @ Габріеля Рамієреса , але буду використовувати підхід @ 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. Оскільки я працював над іншим проектом, я побачив, що можна працювати з затемненням, але без плагіну Maven-eclipse. Це полегшує використання в різних середовищах і дозволяє легко використовувати Maven при затемненні. І це без зміни pom.xml-файла.
Отже, я рекомендую підхід Габріеля Раміреса.
Репозиторії Maven забезпечують простий спосіб завантаження банку з джерелами.
Я поясню це, використовуючи демонстрацію для "spring-boot-actuator-autoconfigure".
В іншому випадку ви завжди можете "git clone" repo з github, якщо його є і отримати конкретний код.
Як пояснили інші, ви можете використовувати "mvn залежність: джерела" команду get і gene izvor джерело для залежності, яку ви використовуєте.
Примітка: Деякі залежності не матимуть source.jar, оскільки в них немає вихідного коду, а файл pom. наприклад, привід пружинного завантаження . Як і в цьому випадку:
Стартові POM - це набір зручних дескрипторів залежності, які ви можете включити у свою заявку. Ви отримуєте «єдину зупинку» за всіма необхідними Весняними та супутніми технологіями, не потребуючи пошуку за зразком коду та копіювання навантажень на пасти дескрипторів залежності.
Довідка: Вступ до стартерів Spring Boot
Якщо ви хочете знайти файл вихідного банку для будь-якого з артефактів вручну, перейдіть до місця зберігання сховища Maven для конкретного артефакту та у файлах натисніть «переглянути всі». Ви можете знайти вихідний файл jar.