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

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

【问题讨论】:

    标签: java 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】:
    1. 访问此站点:http://jar-download.com/online-maven-download-tool.php

    2. 插入 Maven 依赖项 XML

    3. 以 ZIP 格式下载 jar 文件。

    【讨论】:

    • 我会避免通过第三方(第四方?)网站下载 .jar,谁知道他们还添加了什么或如何修改档案(恶意软件)? sblundy 给出了更直接的答案。
    • 网站已关闭并使用外部 API
    猜你喜欢
    • 2017-07-21
    • 2020-06-06
    • 2019-01-13
    • 1970-01-01
    • 2013-03-27
    • 2019-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多