Загрузка всех maven зависимостей в каталог НЕ в репозитории? - PullRequest
115 голосов
/ 26 октября 2011

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

Ответы [ 5 ]

238 голосов
/ 27 октября 2011

Плагин maven для зависимостей потенциально может решить вашу проблему.

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

mvn dependency:copy-dependencies

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

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

mvn dependency:copy-dependencies -Dclassifier=sources

(через Плагин зависимостей Apache Maven doc ).

6 голосов
/ 17 января 2018

Я наконец понял, как использовать 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-файлов

6 голосов
/ 07 мая 2017

Основываясь на ответе @ 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.

3 голосов
/ 26 мая 2017

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

mvn dependency:copy-dependencies -Dclassifier=sources

здесь maven.apache.org

1 голос
/ 29 августа 2017

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

...