Получите исходные файлы jar, прикрепленные к Eclipse для зависимостей, управляемых Maven


176

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

Как настроить Maven на автоматическое получение исходных файлов и вложений javadoc и их правильную регистрацию в Eclipse?


Связанный вопрос, спрашивающий, как всегда загружать исходники и javadoc при использовании maven: stackoverflow.com/questions/5780758/…
— Flow

Ответы:


226

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

Это достигается путем перехода в Window> Preferences> Maven и проверки параметров «Download Artifact Sources» и «Download Artifact JavaDoc».

Снимок экрана настроек Maven


Да, я только начал использовать m2eclipse, и он берет машину этого (и многих других maven).
— Тило

44
Ни один из этих ответов не является ответом. Почему за них голосуют? Я смог загрузить исходные коды, щелкнув по проекту «Control» в представлении «Навигатор» и выбрав «m2 Maven» -> «Загрузить источники». Затем я смог щелкнуть по команде (mac) в классе, чтобы перейти к связанному источнику.
— Алекс Уорден

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

13
@Francis - После внесения вышеуказанных изменений щелкните правой кнопкой мыши свой проект и выберите «Maven> Обновить проект ...». Это приведет к загрузке ваших jar-файлов с исходным кодом.
— carbontax

3
Вместо того, чтобы загружать источники для всех зависимостей, возможно ли загрузить только некоторые зависимости, указав их в pom вместе с самой зависимостью, может b через некоторый внутренний тег в теге зависимостей или что-то подобное?
— Нанософт

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 в eclipse вместо того, чтобы maven создавал файлы конфигурации eclipse.
— Турбьёрн Равн Андерсен

71

Другие ответы на эту работу, но если вы хотите избежать запоминания аргументов командной строки, вы также можете просто добавить конфигурацию downloadSources и downloadJavadocs в раздел maven-eclipse-plugin вашего 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 Извините, я не уверен, возможно ли это.
— думаю,

Я не уверен, что это уместно. Конечно, исходные тексты и параметры загрузки Javadoc являются предпочтением пользователя, а не проблемой на уровне проекта? Смотрите мой ответ ниже о том, как поместить это в settings.xmlфайл.
— Дункан Джонс

Я получил это предупреждение: [ПРЕДУПРЕЖДЕНИЕ] 'build.plugins.plugin.version' для org.apache.maven.plugins: maven-eclipse-plugin отсутствует. Чтобы исправить это, вы можете добавить что-то вроде этого ниже <artifactId>: <версия> 2.9 </ версия>
— Christiaan

16

Я предпочитаю не помещать исходные / 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 зависимость: источники зависимость: resolv -Dclassifier = javadoc Есть какие-нибудь мысли?
— Арун Гупта

Может быть, это работает, но, пожалуйста, объясните, как плагин maven eclipse должен найти эти параметры конфигурации? Вы думаете, что он ищет глобальные свойства?
— chrisinmtown

9

Щелкните правой кнопкой мыши на проекте -> Maven -> источники загрузки


3
Все говорили, как включить его, а не как заставить maven скачивать исходники! после включения опции
— Чад

8

Если файлы jar находятся в локальном репозитории, и вы используете поддержку Eclipses maven, источники автоматически присоединяются. Вы можете запустить, mvn dependency:sourcesчтобы загрузить все исходные файлы для данного проекта. Не уверен, как сделать то же самое с документацией, хотя.


Это сработало для меня. После запуска mvn dependency:sourcesя смог щелкнуть в Eclipse, чтобы прочитать исходный код. Никаких дополнительных операций с m2e не требуется. Чтобы скачать Javadocs вы делаете mvn dependency:sources -Dclassifier=javadoc.
— Мат Гессель

4

Если вы используете meclipse, сделайте

window -> maven -> Download Artifact Sources (выберите отметку)

(Если вы по-прежнему получаете окно вложения источника, нажмите кнопку вложения файла и закройте окно вложения источника. При следующей попытке увидеть источник откроется правильный источник)

Surajz



3

Я попробовал windows-> pref ..-> Maven, но это не сработало. Поэтому я создал новый путь к классу с помощью команды mvn eclipse: eclipse -DdownloadSources = true и обновил рабочее пространство один раз. вуаля .. Источники были прикреплены.

Запись исходного jar доступна в пути к классам. Следовательно, новая сборка решила проблему ...


С вашим решением я могу выбрать, для какого модуля я хочу получить источники. Просто перейдите в этот модуль и выполните команду "mvn eclipse: clean eclipse: eclipse -DdownloadSources = true -T4 -Dmaven.test.skip = true -Denforcer.skip = true". Спасибо :)
— Вишвараджан и

2

в моей версии Eclipse helios с m2Eclipse нет

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

Под окном только «новое окно», «новый редактор», «открытая перспектива» и т. Д.

Если вы щелкнете правой кнопкой мыши по своему проекту, то выберите maven -> источники загрузки

Ничего не произошло. не загружаются источники, не обновляются файлы pom, не появляется всплывающее окно с вопросом, какие источники.

Выполнение mvn xxx вне eclipse опасно - некоторые команды не работают с m2ecilpse - я сделал это один раз и потерял весь проект, пришлось переустановить Eclipse и начать с нуля.

Я все еще ищу способ заставить ecilpse и maven найти и использовать источник внешних jar-файлов, таких как servlet-api.


2

Изменение pom для maven-eclipse-plugin для включения source / javadoc просто применяет новые зависимости, добавляемые в pom. Если нам нужно подать заявку на существующие зависимости, мы должны запустить mvn dependency: sources. Я проверил это.


2

Проверка исходного кода загрузки / javadoc в предпочтениях Eclipse-Maven иногда недостаточна. Если maven по какой-то причине не смог загрузить их (отключение сети?), Maven создаст некоторые файлы * .lastUpdated и больше никогда не загрузит их. Мое эмпирическое решение состояло в том, чтобы удалить каталог артефактов из .m2 / repository и перезапустить рабочее пространство eclipse с проверкой download source / javadoc и проверять также обновление проектов при запуске. После перезапуска рабочей области, возможно, некоторые проекты могут быть помечены как ошибочные, в то время как процесс затмения загружается, тогда любая ошибка будет очищена. Может быть, эта процедура не такая «научная», но для меня все-таки получилось.


1

Я добавил конфигурацию pom в плагин maven-eclipse для загрузки исходного кода и javadocs, но я думаю / надеюсь, что это произойдет для новых зависимостей, а не для существующих.

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


1

задумался над тем, чтобы использовать настройки в pom:

<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 ранее).

Но сюрприз - при использовании варианта POM файл .classpath получает свои исходные коды и javadoc!


1

Для Indigo (и, возможно, Helios) упомянутые выше флажки расположены здесь:

Окно -> Настройки -> Maven


0

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


0

После установки свойств либо на уровне проекта, либо на уровне свойств пользователя выполните Maven -> Обновить проект (принудительное обновление). Скачивает исходники

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.