Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Загрузка всех зависимостей maven в каталог НЕ в репозитории?

Автор вопроса: chubbsondubsОтветов: 5

Я начал преобразовывать свой проект в maven, потому что мне нужно было использовать библиотеку, которая была распространена в двоичной форме только по maven, но после того, как я слишком долго бился головой о стену, я решил перестать причинять себе вред и просто использовать Муравей. Я хотел бы, чтобы maven загрузил jar-файл и все его транзитивные зависимости в каталог по моему выбору, чтобы я мог просто проверить их в своем SCM, поскольку обычно мне нравится, и снова быть блаженным разработчиком.
Любые идеи, как сделать это легко?

  • Подумайте об использовании Ivy и получите необходимое вам транзитивное управление зависимостями с помощью Ant, которому вы доверяете. Или попробуйте использовать структуру каталогов Maven. Dave Newton 26.10.2011
  • Вы пробовали Ivy? Tomasz Nurkiewicz 26.10.2011
  • Нет, но я потратил все свое терпение на переключение на этом этапе. Может быть в следующий раз. Я хочу вернуться к кодированию. Можно ли это сделать с помощью maven? chubbsondubs 27.10.2011
  • Возможный дубликат Как использовать Maven pom для загрузки файлов jar только в определенный каталог? Vadzim 14.02.2017

downloaddependenciesmaven

Ответы

Ответ 1 · рейтинг 289 · Raghuram

maven dependency plugin потенциально может решить вашу проблему. .

Если у вас есть pom со всеми указанными зависимостями вашего проекта, все, что вам нужно сделать, это запустить

mvn dependency:copy-dependencies

и вы найдете папку target/dependencies, заполненную всеми зависимостями, включая транзитивные.

Добавление ответа Густаво снизу: Чтобы загрузить источники зависимости, вы можете использовать

mvn dependency:copy-dependencies -Dclassifier=sources

(через документ подключаемого модуля зависимостей Apache Maven ).

Ответ 2 · рейтинг 12 · Baked Inhalf

Я наконец понял, как использовать Maven. В Eclipse создайте новый проект Maven.

Скачайте Maven, распакуйте архив, добавьте папку /bin в путь.

Подтвердите установку из командной строки, запустив mvn -v (распечатает версию и путь установки java)

Перейдите в корневую папку проекта (где находится pom.xml) и запустите:

mvn dependency:copy-dependencies

Все jar-файлы загружаются в /target/dependency.

Чтобы установить другой выходной каталог:

mvn dependency:copy-dependencies -DoutputDirectory="c:\temp"

Теперь можно повторно использовать этот Maven-проект для всех загрузок зависимостей, изменив файл pom.xml

Добавить jar-файлы в java-проект по пути сборки -> настроить путь сборки -> библиотеки -> добавить файлы JAR ..

Ответ 3 · рейтинг 9 · user

Основываясь на ответе @Raghuram, я нашел руководство по Копирование зависимостей проекта. Просто:

  1. Откройте файл вашего проекта pom.xml и найдите это:

    <project>
      [...]
      <build>
        <plugins>
          ...
        </plugins>
      </build>
      [...]
    </project>
    
  2. Затем замените <plugins> ... </plugins> на:

    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <version>3.0.0</version>
        <executions>
          <execution>
            <id>copy-dependencies</id>
            <phase>package</phase>
            <goals>
              <goal>copy-dependencies</goal>
            </goals>
            <configuration>
              <outputDirectory>${project.build.directory}/alternateLocation</outputDirectory>
              <overWriteReleases>false</overWriteReleases>
              <overWriteSnapshots>false</overWriteSnapshots>
              <overWriteIfNewer>true</overWriteIfNewer>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
    
  3. И вызовите maven в командной строке mvn dependency:copy-dependencies

По завершении он создаст папку target/dependency во всех зависимостях jar от текущего каталога, в котором находится pom.xml.

Ответ 4 · рейтинг 5 · Gustavo

Я нашел следующую команду

mvn dependency:copy-dependencies -Dclassifier=sources

здесь maven.apache.org

Ответ 5 · рейтинг 3 · MagGGG

Пожалуйста, проверьте, есть ли у вас в каталоге ${MAVEN_HOME}/conf файлы конфигурации, например settings.xml. Эти файлы переопределяют настройки из папки .m2, и из-за этого папка репозитория из .m2 может быть не видна или удалена.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы