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

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

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

18 ответов

Решение

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

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

Screenshot of Maven Preferences

mvn eclipse:eclipse -DdownloadSources=true

или же

mvn eclipse:eclipse -DdownloadJavadocs=true

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

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

mvn eclipse:eclipse -DdownloadSources -DdownloadJavadocs

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

Я предпочитаю не ставить исходные /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>

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

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

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

Окно -> Maven -> Скачать источники артефактов (выберите отметку)

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

Surajz

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

задумался над тем, чтобы использовать настройки в 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!

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

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

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

Другие вопросы по тегам