Я начал преобразовывать свой проект в maven, потому что мне нужно было использовать библиотеку, которая была распространена в двоичной форме только по maven, но после того, как я слишком долго бился головой о стену, я решил перестать причинять себе вред и просто использовать Муравей. Я хотел бы, чтобы maven загрузил jar-файл и все его транзитивные зависимости в каталог по моему выбору, чтобы я мог просто проверить их в своем SCM, поскольку обычно мне нравится, и снова быть блаженным разработчиком.
Любые идеи, как сделать это легко?
Загрузка всех зависимостей maven в каталог НЕ в репозитории?
Ответы (5)
maven dependency plugin потенциально может решить вашу проблему. .
Если у вас есть pom со всеми указанными зависимостями вашего проекта, все, что вам нужно сделать, это запустить
mvn dependency:copy-dependencies
и вы найдете папку target/dependencies, заполненную всеми зависимостями, включая транзитивные.
Добавление ответа Густаво снизу: Чтобы загрузить источники зависимости, вы можете использовать
mvn dependency:copy-dependencies -Dclassifier=sources
(через документ подключаемого модуля зависимостей Apache Maven ).
useRepositoryLayout кому: true
- person Raghuram; 27.10.2014
<build>....</build> в ваш файл pom.xml, но это было проигнорировано в моем проекте при экспорте, поэтому не уверен, действительно ли вам нужно это делать! Однако вам необходимо установить Maven (технически: загрузите zip, разархивируйте и добавьте папку bin в PATH), если вы используете Eclipse, потому что, хотя с ним идут новые версии, это просто тип плагина, а не полная установка, которая вам нужно запустить команды mvn в cmd! Затем просто запустите команду в папке с файлом pom.xml, и загруженные jar-файлы будут в его подпапке.
- person Neph; 04.09.2019
Я наконец понял, как использовать 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 ..
mvn dependency:copy-dependencies, как вы описали, из этой папки, и все зависимые файлы jar были аккуратно скопированы в одну папку.
- person Bernhard Döbler; 19.06.2018
Основываясь на ответе @Raghuram, я нашел руководство по Копирование зависимостей проекта. Просто:
Откройте файл вашего проекта
pom.xmlи найдите это:<project> [...] <build> <plugins> ... </plugins> </build> [...] </project>Затем замените
<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>И вызовите maven в командной строке
mvn dependency:copy-dependencies
По завершении он создаст папку target/dependency во всех зависимостях jar от текущего каталога, в котором находится pom.xml.
pom.xml.
- person user; 17.01.2018
mvn dependency:copy-dependencies сработало!
- person Baked Inhalf; 17.01.2018
Я нашел следующую команду
mvn dependency:copy-dependencies -Dclassifier=sources
здесь maven.apache.org
Пожалуйста, проверьте, есть ли у вас в каталоге ${MAVEN_HOME}/conf файлы конфигурации, например settings.xml. Эти файлы переопределяют настройки из папки .m2, и из-за этого папка репозитория из .m2 может быть не видна или удалена.