Я начал преобразовывать свой проект в 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
может быть не видна или удалена.