如何使用Maven pom将jar文件仅下载到特定目录?


78

有没有一种方法可以将依赖项从pom.xml文件下载到Java中的指定文件夹?我可以从Java运行maven命令,并收到下载消息,但是我不知道maven将这些库存储在哪里?如何将这些依赖项下载到特定文件夹?

Answers:


114

看一下maven的依赖插件,特别是目标。在使用一节介绍了如何做的正是你想要的。 copy-dependencies

要从命令行执行此操作,只需执行以下操作:

$ mvn dependency:copy-dependencies -DoutputDirectory=OUTPUT_DIR

我在使用此方法时遇到一个奇怪的问题,它为主要依赖项下载了.pom文件,但为子依赖项(传递依赖项)下载了适当的jar。难道我做错了什么?
jmng

请注意,在Windows上,请使用mvn dependency:copy-dependencies "-DoutputDirectory=OUTPUT_DIR"
AndrWeisR

11

正如解释在这里,你可以使用Maven的依赖关系的插件:得到这个。

例如,如果要下载org.apache.hive:hive-common:2.1.1到本地文件夹中,请执行以下操作:

mvn dependency:get -Ddest=./ -Dartifact=org.apache.hive:hive-common:2.1.1

如果要从快照存储库下载最新3.0.0-SNAPSHOT:tar.gz版本,请执行以下操作:com.orientechnologies:orientdb-community-gremlinhttps://oss.sonatype.org/content/repositories/snapshots

mvn dependency:get -Ddest=./ -DremoteRepositories=sonatype-nexus-snapshots::::https://oss.sonatype.org/content/repositories/snapshots -Dartifact=com.orientechnologies:orientdb-community-gremlin:3.0.0-SNAPSHOT:tar.gz

您可以-Dartifact=org.apache.hive:hive-common:LASTEST用来获取最新版本。
Matthieu

[警告]目标/目标参数已过时:它将在以后的版本中消失。
Artem Yakovlev

5

向pom.xml添加类似于以下内容的内容:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <configuration>
        <outputDirectory>
            ${project.build.directory}
        </outputDirectory>
    </configuration>
</plugin>

然后运行mvn clean dependency:copy-dependencies以执行复制。将其与Assembly插件结合使用,您可以将所有内容打包到一个自包含的存档中以进行分发。


我更改${project.build.directory}main\java\resources\libs建立本地图书馆。谢谢!注意:这里我的路径是相对于usr.dir(项目根目录)的,但也可以是绝对路径,例如C:\Mydir。大!
WesternGun


1

Maven将所有这些存储在其本地Maven2存储库中。默认情况下,它将把它们存储在您的用户主目录中,该目录称为存储库。

您可以使用maven-dependency-plugin的目标copy来获取项目的所有依赖项并将它们放在文件夹中。

http://maven.apache.org/plugins/maven-dependency-plugin/copy-mojo.html


2
在Java中,是否还有其他方法可以复制依赖项,因为我没有编写pom.xml而是直接运行它?
Feras Odeh,
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.