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

Posted

技术标签:

【中文标题】如何使用 Maven pom 仅将 jar 文件下载到特定目录?【英文标题】:How to use Maven pom to download jar files only to a specific directory? 【发布时间】:2011-12-06 05:38:13 【问题描述】:

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

【问题讨论】:

【参考方案1】:

看看 maven 的依赖插件,特别是 copy-dependencies 目标。 usage section 描述了如何做你想做的事。

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

$ mvn dependency:copy-dependencies -DoutputDirectory=OUTPUT_DIR

添加此项以排除传递或内部依赖项:

-DexcludeTransitive=true

【讨论】:

我在使用这种方法时遇到了一个奇怪的问题,它为主要依赖项下载了一个 .pom 文件,但对于它的子依赖项(传递依赖项),它下载了正确的 jar。我做错了吗? 注意,在 Windows 上,使用 mvn dependency:copy-dependencies "-DoutputDirectory=OUTPUT_DIR"【参考方案2】:

正如here 解释的那样,您可以为此使用maven-dependency-plugin:get。

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

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

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

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获取最新版本。 [WARNING] 目的地/目的地参数已弃用:它将在未来版本中消失。【参考方案3】:

在 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 plugin 结合使用,您可以将所有内容打包成一个独立的存档以供分发。

【讨论】:

我将 $project.build.directory 更改为 main\java\resources\libs 以构建我的本地库。谢谢!注意:这里我的路径是相对于usr.dir(项目根目录)的,但它也可以是绝对的,比如C:\Mydir。太好了!【参考方案4】:

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

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

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

【讨论】:

在java中有没有其他方法可以复制依赖项,因为我不写pom.xml我只是运行它?【参考方案5】:

    访问此站点:http://jar-download.com/online-maven-download-tool.php

    插入 Maven 依赖项 XML

    以 ZIP 格式下载 jar 文件。

【讨论】:

我会避免通过第三方(第四方?)网站下载 .jar,谁知道他们还添加了什么或如何修改档案(恶意软件)? sblundy 给出了更直接的答案。 网站已关闭并使用外部 API

以上是关于如何使用 Maven pom 仅将 jar 文件下载到特定目录?的主要内容,如果未能解决你的问题,请参考以下文章

如何配置maven pom文件来解决jar包冲突

如何导出项目pom中引用的mavenjar包

如何使用 maven pom.xml 创建 jar

IDEA中maven如何将jar包导入本地的maven库

如何在IntelliJ IDEA中检索maven依赖jar包的源码

如何配置pom.xml用maven打包java工程