Maven - всегда скачивайте исходники и javadocs


244

Можно ли настроить maven так, чтобы он всегда загружал исходники и javadocs? Указывать -DdownloadSources=true -DdownloadJavadocs=trueкаждый раз (что обычно выполняется дважды при запуске mvn compile, потому что я забыл первый раз) становится довольно утомительно.


Это для плагина Eclipse? Вы не должны запускать это очень часто в любом случае ...
sjr

1
Нет, это для программы командной строки. Мне не нужно запускать его очень часто, но было бы здорово, если бы мне пришлось запускать его никогда!
Шммм

1
Что такое командная строка? Это когда mvn eclipse:eclipseправильно делаешь ?
SJR

14
@sjr, да, чтобы скачать исходники и javadocs можно выполнитьmvn eclipse:eclipse -DdownloadSources=true -DdownloadJavadocs=true
Юрий Наконечный

Я думаю, что этот вопрос до сих пор не ответил. Принятый ответ относится только к плагину Eclipse. Ответ @ AlexisGamarra - самый близкий, но он не решает «постоянство» решения - оно не заставляет Maven делать это всегда, когда вы запускаете mvn install .
Хонза Зидек

Ответы:


265

Откройте файл settings.xml ~/.m2/settings.xml (создайте его, если он не существует). Добавьте раздел с добавленными свойствами. Затем убедитесь, что activeProfiles включает новый профиль.

<settings>

   <!-- ... other settings here ... -->

    <profiles>
        <profile>
            <id>downloadSources</id>
            <properties>
                <downloadSources>true</downloadSources>
                <downloadJavadocs>true</downloadJavadocs>
            </properties>
        </profile>
    </profiles>

    <activeProfiles>
        <activeProfile>downloadSources</activeProfile>
    </activeProfiles>
</settings>

6
Я пытаюсь эти свойства профиля в Maven 2.2.1 и 3.0.2, и они не работают. Целевым хранилищем является Archiva. Любые предложения о том, что еще можно попробовать? Я также пытался использовать зависимость: источники цели. Спасибо
jmend

18
Более того, в Eclipse вы можете просто перейти в «Настройки» -> «Maven» (без подкатегории). Там вы можете проверить «Скачать источники артефактов / JavaDocs». Однако иногда Eclipse не хочет создавать этот файл вручную (случилось со мной в Luna). В этом случае - перейдите туда, вставьте этот ответ, завернутый в теги настроек, и скажите Eclipse, чтобы он снова загрузился, и он должен работать.
Андрей Барсан

9
Это сработало для меня: в Eclipse перейдите в «Настройки» -> «Maven» (без подкатегории). Проверьте - «Загрузить источник артефакта» - «Загрузить артефакт JavaDocs» - «Обновить проекты Maven при запуске» (только потому, что я не могу найти ручной путь). Затем перезапустите Eclipse. Готово
Дирк

4
Это влияет только на плагин Maven Eclipse.
Цзинго Яо

9
Это не должно быть принятым ответом! Как сказал @JingguoYao, он влияет только на плагин Maven Eclipse. Первоначальный вопрос был связан не с «Затмением», а с самим «Мавеном».
Хонза Зидек

195

В моем случае решение «settings.xml» не работало, поэтому я использую эту команду для загрузки всех источников:

mvn dependency:sources

Вы также можете использовать его с другими командами maven, например:

mvn clean install dependency:sources -Dmaven.test.skip=true

Чтобы загрузить всю документацию, используйте следующую команду:

mvn dependency:resolve -Dclassifier=javadoc

1
Я думаю, что этот вопрос до сих пор не ответил. Принятый ответ относится только к плагину Eclipse. Ваш ответ наиболее близок, но не решает «постоянство» решения - оно не заставляет Maven делать это всегда, когда вы запускаете mvn install .
Хонза Зидек

52

Просто собрал и подготовил единую команду для адресации исходного кода и загрузки документации ...

mvn dependency:sources dependency:resolve -Dclassifier=javadoc

42

Ответ для людей из Google

В Eclipse вы можете автоматически загружать Javadoc и исходники .

Для этого щелкните правой кнопкой мыши на проекте и используйте

  • Maven -> Скачать JavaDoc
  • Maven -> Скачать исходники

3
А в IDEA вы можете щелкнуть правой кнопкой мыши по модулю, и в меню Maven есть возможность загрузить источники и / или документацию
forresthopkinsa

@Betlista прочитайте первую строку поста. Многие люди переходят из Google в поисках чего-то еще. Но в конечном итоге сюда
заходят

14

Я использую Maven 3.3.3 и не могу заставить профиль по умолчанию работать в пользовательском или глобальном settings.xmlфайле.

В качестве обходного пути вы также можете добавить дополнительный плагин сборки в ваш pom.xmlфайл.

<properties>
    <maven-dependency-plugin.version>2.10</maven-dependency-plugin.version>
</properties>
<build>
    <plugins>
        <!-- Download Java source JARs. -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <version>${maven-dependency-plugin.version}</version>
            <executions>
                <execution>
                    <goals>
                        <goal>sources</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>


4

Как сказал @ xecaps12, самый простой / эффективный подход - изменить файл настроек Maven (~ / .m2 / settings.xml), но если это настройки по умолчанию для вас, вы также можете установить его так

<profile>
  <id>downloadSources</id>
  <activation>
    <activeByDefault>true</activeByDefault>
  </activation>
  <properties>
      <downloadSources>true</downloadSources>
      <downloadJavadocs>true</downloadJavadocs>
  </properties>
</profile>

Это на самом деле не работает, вы просто объявляете неиспользуемые глобальные свойства. Я считаю, что мифическое решение пришло от maven-eclipse-plugin: maven.apache.org/plugins/maven-eclipse-plugin/examples/…
inanutshellus

Нет, это просто упрощение «
решенного

1
«Разрешенная» версия тоже не работает. (Я тоже сделал там тот же комментарий, но временно удалил его, пока я беседую с вами.) Итак, вы говорите, что ваш ответ (и, следовательно, решенный ответ) действительно работает для вас? Я имею в виду, что 159 человек загрузили этот неправильный или устаревший ответ, так что ясно, что он работает для кого-то. Если он работает , как вы говорите, то , что я делаю что - то не так, как и несколько людей на разрешенном ответ в своих комментариях и я люблю , чтобы узнать , что и получить эту работу.
inanutshellus

Я предполагаю, что эти глобальные переменные проверяются плагином eclipse, когда вы на самом деле разрабатываете с помощью eclise. выборка источника производится по затмению, а не по maven в командной строке.
Джонатан Клотье

1

Я думаю, что это может быть сделано за плагин. Смотрите эту главу из книги Maven.

Возможно, вы сможете настроить плагин зависимости для загрузки источников (хотя я сам не пробовал :-).


1

В Netbeans вы можете указать Maven проверять Javadoc при каждом открытом проекте:

Tools| Options| Javaзначок | Mavenвкладка | Dependenciesкатегория | Check Javadocраскрывающийся набор Every Project Open.

Закройте и снова откройте Netbeans, и вы увидите, что Maven загружает Javadocs в строке состояния.


0

Не уверен, но вы должны быть в состоянии что-то сделать, установив активный профиль по умолчанию в файле settings.xml

Видеть

См. Http://maven.apache.org/guides/introduction/introduction-to-profiles.html.


Ах! Точно так же, как описано @ xecaps12
pgbsl

9
Вы должны действительно скопировать соответствующие части из ссылки в свой ответ, на случай, если URL сломается.
Дункан Джонс

0

Просто измените файл mvn(или mvn.cmdесли в Windows) и добавьте все необходимые параметры командной строки (как указано в других ответах). Если вы не хотите изменять установочные файлы (что я бы порекомендовал), создайте mymvn(или mymvn.cmd) обертку, которая вызывает регулярные mvnпараметры с параметрами.


0

Мне пришлось использовать KeyStore для загрузки банок. Если у вас есть какие-либо проблемы, связанные с сертификатом, вы можете использовать этот подход:

mvn clean install dependency:sources -Dmaven.test.skip=true -Djavax.net.ssl.trustStore="Path_To_Your_KeyStore"

Если вы хотите знать, как создавать KeyStores, это очень хорошая ссылка: проблемы с использованием Maven и SSL за прокси


0

Для источников на уровне зависимости (pom.xml) вы можете добавить:

<classifier>sources</classifier>

0

Чтобы получить ответ от kevinarpe, это касается как источников, так и Javadocs:

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <version>3.1.1</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>sources</goal>
                            <goal>resolve</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <classifier>javadoc</classifier>
                </configuration>
            </plugin>
        </plugins>
    </build>
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.