Загрузка всех зависимостей maven в каталог NOT в хранилище?

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

Ответ 1

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

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

mvn dependency:copy-dependencies

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

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

mvn dependency:copy-dependencies -Dclassifier=sources

(через Apache Maven Dependency Plugin doc).

Ответ 2

Создайте файл ivy.xml, чтобы просмотреть зависимости проекта:

<ivy-module version="2.0">
    <info organisation="org.demo" module="demo"/>
    <configurations defaultconfmapping="default"/>
    <dependencies>
        <dependency org="commons-lang" name="commons-lang" rev="2.6"/>
        ..
    </dependencies>
</ivy-module>

Загрузка этих банок и их транзитивных зависимостей теперь может быть выполнена одним из двух способов.

командной строки

Ivy может запускаться как программа командной строки. Следующий пример будет загружен в локальный каталог "lib":

java -jar ivy-2.2.0.jar -ivy ivy.xml -retrieve "lib/[artifact].[ext]"

ANT build

плющ лучше всего использовать при интеграции в сборку ANT. Следующий пример предназначен для загрузки баннеров в локальный каталог lib и генерирует отчет HTML для анализа зависимостей.

<target name="retrieve" description="Retrieve dependencies locally">
    <ivy:retrieve pattern="${lib.dir}/[artifact].[ext]"/>

    <ivy:report todir="${report.dir}" graph="false"/>
</target>

Ответ 3

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

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

Ответ 5

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

mvn dependency:copy-dependencies -Dclassifier=sources

здесь maven.apache.org

Ответ 6

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