Отримайте вихідні файли jar, приєднані до Eclipse для Maven-залежностей


176

Я використовую Maven (та інтеграцію Maven Eclipse) для управління залежностями для моїх Java-проектів у Eclipse. Функція автоматичного завантаження файлів JAR з сховищ Maven - це реальна економія часу. На жаль, він не включає документацію API та вихідний код.

Як я можу налаштувати Maven автоматично також отримувати вкладення джерела та javadoc та реєструвати їх належним чином у Eclipse?


Питання, пов'язані з питанням, як завжди завантажувати джерела та javadoc під час використання maven: stackoverflow.com/questions/5780758/…
Потік

Відповіді:


226

Я впевнений, що плагін m2eclipse Maven для Eclipse - навпаки - може це зробити. Ви можете налаштувати його для автоматичного завантаження і вихідних файлів, і javadoc.

Це досягається, зайшовши у вікно> Налаштування> Maven і перевіривши параметри "Завантажити джерела артефакту" та "Завантажити артефакт JavaDoc".

Знімок екрана


Так, я щойно почав використовувати m2eclipse, і він забирає машину цього (та багато іншого).
Тіло

44
Жодна з цих відповідей не є відповідями. Чому за них голосують? Мені вдалося завантажити джерела, натиснувши клавішу управління проектом у вікні «Навігатор» та вибравши «m2 Maven» -> «Завантажити джерела». Тоді мені вдалося командою клацнути (mac) класу для переходу до пов'язаного джерела.
Alex Worden

8
Здається, що якщо скомпільований JAR вже завантажений, Eclipse не спробує негайно отримати джерело / Javadoc JAR. Здається, що зміна POM, що містить залежність від POM, для яких я хочу джерело / Javadoc в Eclipse, і збереження POM завантажує джерело / Javadoc для залежностей, навіть якщо скомпільований JAR вже знаходиться в кеш-сховищі Maven.
Френсіс Ганьє

13
@Francis - Після внесення вищезазначених змін клацніть правою кнопкою миші на вашому проекті та виберіть "Maven> Update Project ..." Це призведе до завантаження ваших джерельних банок.
карбоксакс

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

127
mvn eclipse:eclipse -DdownloadSources=true

або

mvn eclipse:eclipse -DdownloadJavadocs=true

або ви можете додати обидва прапори, як вказує Спенсер К.

Крім того, =trueпорція не потрібна, тому ви можете використовувати

mvn eclipse:eclipse -DdownloadSources -DdownloadJavadocs

8
або обидва! mvn eclipse: eclipse -DdownloadSources = true -DdownloadJavadocs = true Це працює лише в тому випадку, якщо джерело та javadocs були надані до репортажу, з якого ви завантажуєте. Іноді вони не такі, як Весна.
Спенсер Кормос

2
Зараз весна їх забезпечує.
Робін Грін

Зауважте, що цій відповіді більше 10 років. Використовуйте плагін m2e в затемненні замість того, щоб створювати файли конфігурації затемнення.
Thorbjørn Ravn Andersen

71

Інші відповіді на цю роботу, але якщо ви хочете уникати запам'ятовування аргументів командного рядка, ви також можете просто додати до файлу downloadSources та конфігурації downloadJavadocs до розділу maven-eclipse-плагін вашого pom.xml:

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

Чи зможу я встановити це на рівні залежності?
marcorossi

@marcorossi Вибачте, я не впевнений, чи можливо це.
перемогти

Я не впевнений, що це доречно. Безумовно, налаштування завантаження джерела та Javadoc є перевагою користувача, а не проблемою на рівні проекту? Дивіться мою відповідь нижче, як розмістити це у settings.xmlфайлі.
Дункан Джонс

Я отримав це попередження: [ПОПЕРЕДЖЕННЯ] 'build.plugins.plugin.version' для org.apache.maven.plugins: відсутній плагін maven-eclipse. Щоб вирішити, що ви можете додати щось подібне нижче <artifactId>: <version> 2,9 </version>
Крістіан

16

Я вважаю за краще не вводити параметри завантаження source / Javadoc у pom.xmlфайл проекту, оскільки я вважаю, що це налаштування користувача, а не властивості проекту. Натомість я розміщую їх у профілі у своєму settings.xmlфайлі:

<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">

  <profiles>
    <profile>
      <id>sources-and-javadocs</id>
      <properties>
        <downloadSources>true</downloadSources>
        <downloadJavadocs>true</downloadJavadocs>
      </properties>
    </profile>
  </profiles>

  <activeProfiles>
    <activeProfile>sources-and-javadocs</activeProfile>
  </activeProfiles>
</settings>

1
Я скопіював це settings.xml у .m2, проте джерела та javadocs не копіюються. Наступна команда, явно в CLI, приносить джерела та javadocs, хоча: mvn залежність: джерела залежність: вирішити -Dclassifier = javadoc Будь-які думки?
Арун Гупта

Можливо, це працює, але поясніть, будь ласка, як плагін Maven eclipse повинен знайти ці параметри конфігурації? Ви думаєте, що це шукає глобальні властивості?
chrisinmtown

9

Клацніть правою кнопкою миші на проект -> maven -> завантажте джерела


3
Усі говорили, як увімкнути це не як змусити Maven завантажити джерела! після ввімкнення опції
Чад

8

Якщо джерельні банки знаходяться в локальному сховищі, а ви використовуєте підтримку Maven Eclipses, джерела автоматично приєднуються. Ви можете запустити, mvn dependency:sourcesщоб завантажити всі джерельні банки для даного проекту. Не знаю, як зробити те ж саме з документацією.


Це працювало для мене. Після запуску mvn dependency:sourcesя зміг натиснути на Eclipse, щоб прочитати джерело. Не потрібно додаткового перегляду з m2e. Щоб завантажити файли javadocs, які ви робите mvn dependency:sources -Dclassifier=javadoc.
Мат Гессел

4

Якщо ви використовуєте meclipse, робіть

window -> maven -> Завантажити джерела артефактів (виберіть чек)

(Якщо ви все-таки отримаєте вікно джерела вкладення, натисніть кнопку прикріпити файл і закрийте вікно джерела вкладення. Наступного разу, коли ви спробуєте побачити джерело, воно відкриє правильне джерело)

Сурайж



3

Я спробував windows-> pref ..-> Maven Але це не вийшло. Отже, я створив новий шлях до класу з командою mvn eclipse: eclipse -DdownloadSources = true і один раз оновив робочу область. вуаля .. Джерела були додані.

Запис банку в джерело доступний у класі. Отже, новобудова вирішила проблему ...


За допомогою вашого рішення я можу вибрати та вибрати модуль, для якого я хочу отримати джерела. Просто увійдіть у цей модуль і побудуйте з "mvn eclipse: clean eclipse: eclipse -DdownloadSources = true -T4 -Dmaven.test.skip = true -Denforcer.skip = true". Дякую :)
vishwarajanaі

2

в моїй версії геліосів Eclipse з m2Eclipse немає

window --> maven --> Download Artifact Sources (select check)

Під вікном є лише "нове вікно", "новий редактор", "відкрита перспектива" тощо.

Якщо ви клацніть правою кнопкою миші на своєму проекті, тоді вибираєте maven -> завантажуйте джерела

Нічого не відбувається. жодні джерела не завантажуються, жодні файли пам’яті не оновлюються, не з’являється вікно із запитом, які джерела.

Робити mvn xxx поза затемненням небезпечно - деякі команди не працюють з m2ecilpse - я це зробив один раз і втратив весь проект, довелося перевстановити затемнення і почати з нуля.

Я все ще шукаю спосіб отримати ecilpse і maven для пошуку та використання джерела зовнішніх банок, таких як servlet-api.


2

Змінення pom для maven-eclipse-плагіна, щоб включити джерело / javadoc, просто застосуйте для нових залежностей, що додаються до pom. Якщо нам потрібно застосувати існуючі залежності, ми повинні запустити mvn залежність: джерела. Я це перевірив.


2

Перевірка джерела завантаження / javadoc у налаштуваннях Eclipse-Maven, іноді недостатня. У випадку, якщо maven з певних причин не вдалося їх завантажити (мережеве затемнення?), Maven створює деякі * .lastUpdate файли, після чого вони більше ніколи не завантажуються. Моє емпіричне рішення полягало в тому, щоб видалити каталог артефактів із .m2 / сховища та перезапустити робочу область eclipse із завантаженим джерелом завантаження / javadoc і перевірити оновлення проектів при запуску. Після перезапуску робочої області, можливо, деякі проекти можуть бути позначені помилково, тоді як хід затемнення завантажується, тоді будь-яка помилка буде видалена. Можливо, ця процедура не така "наукова", але для мене це вдалося.


1

Я додав конфігурацію pom до плагіна Maven-eclipse для завантаження джерела та javadocs, але я вважаю, що це станеться для нових залежностей, а не для існуючих.

Для існуючих залежностей я переглянув провідник пакунків до "Maven Dependitions" і клацнув правою кнопкою миші на commons-lang-2.5.jar, вибраний Maven | Завантажте джерела і ... нічого, здається, не сталося (жодної смуги прогресу чи вказівки на те, що вона щось робить). Однак це завантажено, оскільки я можу перейти до джерела у commons-lang зараз.


1

переосмислити запропоновано використовувати налаштування в пам’яті :

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

По-перше, я думав, що це все ще не приєднає javadoc та джерела (як я раніше безуспішно намагався з цим параметром -DdownloadSources).

Але сюрприз - .classpath файл IS отримує свої джерела та javadoc додається під час використання варіанту POM!


1

Для вищезазначених вище пунктів Indigo (і, мабуть, Helios) знаходяться:

Вікно -> Налаштування -> Maven


0

У мене була подібна проблема, і рішення, яке найкраще працювало для мене, полягало в тому, щоб включити джерело в ту саму банку, що і компільований код (так що вказаний каталог в банку буде включати в себе і те, Foo.javaі інше Foo.class). Eclipse автоматично пов'язує джерело зі скомпільованим кодом і автоматично надає JavaDoc з джерела. Очевидно, це корисно лише в тому випадку, якщо ви контролюєте артефакт.


0

Після встановлення властивостей на рівні проекту або на рівні властивостей користувача, будь ласка, зробіть Maven -> Update Project (Force Update). Він завантажує джерела

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