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

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

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


person Thilo    schedule 22.11.2008    source источник
comment
Связанный вопрос, спрашивающий, как всегда загружать источники и javadoc при использовании maven: stackoverflow.com/questions/5780758/   -  person Flow    schedule 23.09.2014


Ответы (18)


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

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

Скриншот настроек Maven

person mrembisz    schedule 31.05.2009
comment
Да, я только начал использовать m2eclipse, и он берет эту машину (и многое другое, maven). - person Thilo; 01.06.2009
comment
Ни один из этих ответов не является ответом. Почему за них голосуют? Я смог загрузить исходники, щелкнув проект в режиме просмотра "Навигатор" и выбрав m2 Maven - ›Загрузить исходники. Затем я смог щелкнуть по классу, удерживая нажатой клавишу (Mac), чтобы перейти к связанному источнику. - person Alex Worden; 03.03.2010
comment
Кажется, что если скомпилированный JAR уже был загружен, Eclipse не будет пытаться сразу получить исходный файл / Javadoc JAR. Похоже, что изменение POM, содержащего зависимость от POM, для которых я хочу, чтобы источник / Javadoc в Eclipse и сохранение POM загружали источник / Javadoc для зависимостей, даже если скомпилированный JAR уже находится в кеше репозитория Maven. - person Francis Gagné; 14.10.2012
comment
@Francis - После внесения вышеуказанного изменения щелкните правой кнопкой мыши свой проект и выберите Maven ›Обновить проект ... Это приведет к загрузке исходных jar-файлов. - person carbontax; 20.12.2013
comment
@Alex Worden Это одно из лучших решений. Я не знаю, почему у вас не было решения с этим. Это работает и для меня, поэтому проголосовали за. Это также упоминается здесь. +1 к @ mrembisz. - person OO7; 15.05.2015
comment
Я подозреваю, что этот ответ 6-летней давности был отредактирован. В то время это, должно быть, не имело смысла, иначе я бы не стал так комментировать. :) - person Alex Worden; 17.05.2015
comment
Вместо загрузки источников для всех зависимостей, можно ли загрузить только некоторые зависимости, указав их в pom вместе с самой зависимостью, может быть через какой-то внутренний тег в теге зависимостей или что-то подобное? - person nanosoft; 06.07.2015

mvn eclipse:eclipse -DdownloadSources=true

or

mvn eclipse:eclipse -DdownloadJavadocs=true

или вы можете добавить оба флага, как указывает Спенсер К.

Кроме того, часть =true не требуется, поэтому вы можете использовать

mvn eclipse:eclipse -DdownloadSources -DdownloadJavadocs
person Stephen Denne    schedule 22.11.2008
comment
или оба! mvn eclipse: eclipse -DdownloadSources = true -DdownloadJavadocs = true Это работает, только если источник и javadocs были предоставлены репо, из которого вы загружаете. Иногда их не предоставляют, как Spring. - person Spencer Kormos; 09.12.2008
comment
Весна теперь их предоставляет. - person Robin Green; 15.12.2014
comment
Обратите внимание, что этому ответу более 10 лет. Используйте плагин m2e в eclipse вместо того, чтобы maven создавал файлы конфигурации eclipse. - person Thorbjørn Ravn Andersen; 01.03.2019

Другие ответы на эту работу, но если вы не хотите запоминать аргументы командной строки, вы также можете просто добавить в 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>
person overthink    schedule 22.01.2010
comment
смогу ли я установить это на уровне зависимости? - person marcorossi; 11.11.2011
comment
@marcorossi Извините, я не уверен, что это возможно. - person overthink; 11.11.2011
comment
Я не уверен, что это уместно. Несомненно, исходный код и параметры загрузки Javadoc - это предпочтения пользователя, а не проблема на уровне проекта? См. мой ответ ниже, чтобы узнать, как разместить это в settings.xml файле. - person Duncan Jones; 27.09.2012
comment
Я получил это предупреждение: [ПРЕДУПРЕЖДЕНИЕ] 'build.plugins.plugin.version' для org.apache.maven.plugins: maven-eclipse-plugin отсутствует. Чтобы исправить это, вы можете добавить что-то вроде этого ниже ‹artifactId›: ‹version› 2.9 ‹/version› - person Christiaan; 28.10.2014

Я предпочитаю не помещать параметры загрузки исходного кода / 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>
person Duncan Jones    schedule 19.08.2012
comment
Я скопировал этот файл settings.xml в .m2, однако источники и javadocs не копируются. Следующая команда явно в интерфейсе командной строки передает источники и javadocs: mvn dependency: sources dependency: resolve -Dclassifier = javadoc Есть мысли? - person Arun Gupta; 03.10.2013
comment
Возможно, это сработает, но объясните, пожалуйста, как плагин maven eclipse должен находить эти параметры конфигурации? Вы думаете, он ищет глобальные свойства? - person chrisinmtown; 04.05.2016

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

person Sumeet    schedule 07.05.2014
comment
Все говорили, как включить его, а не как заставить maven загружать исходники! после включения опции - person Chad; 29.09.2014

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

person Hardy    schedule 01.07.2010
comment
Это сработало для меня. После запуска mvn dependency:sources я смог щелкнуть в Eclipse, чтобы прочитать исходный код. Никакой дополнительной очистки с помощью m2e не требуется. Чтобы загрузить документацию javadocs, выполните mvn dependency:sources -Dclassifier=javadoc. - person Mat Gessel; 06.05.2016

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

окно -> maven -> Загрузить источники артефактов (установите флажок)

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

Сурадж

person surajz    schedule 16.10.2009

Существует также похожий вопрос, который отвечает на этот вопрос и включает пример настроек pom.

person andrel    schedule 04.02.2009

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

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

person om39a    schedule 11.05.2012
comment
С вашим решением я могу выбрать, для какого модуля я хочу получить исходники. Просто войдите в этот модуль и выполните сборку с помощью mvn eclipse: clean eclipse: eclipse -DdownloadSources = true -T4 -Dmaven.test.skip = true -Denforcer.skip = true. Спасибо :) - person vishwarajanand; 06.10.2017

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

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

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

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

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

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

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

person wingnut    schedule 07.12.2010

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

person bnguyen82    schedule 12.02.2012

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

person user17417    schedule 27.10.2015

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

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

person unique72    schedule 17.01.2011

overthink предложил использовать настройку в 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>
...

First i thought this still won't attach the javadoc and sources (as i tried unsuccessfully with that -DdownloadSources option before).

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

person jhohlfeld    schedule 19.01.2011

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

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

person Chris Romine    schedule 29.09.2011

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

person Dan R.    schedule 10.02.2012

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

person arkabhi    schedule 05.06.2015

Небольшое дополнение к ответу, если ваш проект не является проектом maven, вы все же можете получить исходный код jar-файлов, используя этот плагин, предоставленный в eclipse Прикрепитель исходного кода Java

person Bhaskara Arani    schedule 11.03.2021