85

Is there a way to download dependencies from a pom.xml file to a specified folder in java? I'm able to run maven command from java and I got download messages, but I don't know where maven stores these libraries? How can I download these dependencies to a specific folder?

Ciro Santilli OurBigBook.com
  • 347,512
  • 102
  • 1,199
  • 985
Feras Odeh
  • 9,136
  • 20
  • 77
  • 121

5 Answers5

127

Take a look at maven's dependency plugin, specifically the copy-dependencies goal. The usage section describes how to do exactly what you want.

To do it from the command line just do:

$ mvn dependency:copy-dependencies -DoutputDirectory=OUTPUT_DIR

Add this to exclude the transitive or inner dependencies:

-DexcludeTransitive=true

JRichardsz
  • 14,356
  • 6
  • 59
  • 94
sblundy
  • 60,628
  • 22
  • 121
  • 123
  • 2
    I'm encountering a strange issue with this method, it downloaded a .pom file for the main dependency but for its subdependencies (the transitive dependencies) it downloaded the proper jars. Am I doing something wrong? – jmng Jan 09 '18 at 16:21
  • 1
    Note, on Windows, use `mvn dependency:copy-dependencies "-DoutputDirectory=OUTPUT_DIR"` – AndrWeisR Jul 20 '20 at 03:38
11

As explained here, you can use maven-dependency-plugin:get for this.

For example, if you want to download org.apache.hive:hive-common:2.1.1 in your local folder, execute this:

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

If you want to download the latest 3.0.0-SNAPSHOT:tar.gz version of com.orientechnologies:orientdb-community-gremlin from https://oss.sonatype.org/content/repositories/snapshots snapshots repository, execute this:

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
Anthony O.
  • 22,041
  • 18
  • 107
  • 163
7

Add something similar to the following to pom.xml:

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

Then run mvn clean dependency:copy-dependencies to perform the copy. Combine this with the assembly plugin and you can package everything into a self contained archive for distribution.

Travis Heeter
  • 13,002
  • 13
  • 87
  • 129
Amar
  • 1,556
  • 3
  • 18
  • 28
  • I changed `${project.build.directory}` to `main\java\resources\libs` to build my local library. Thanks! Note: here my path is relative to the `usr.dir` (project root), but it can also be absolute, like `C:\Mydir`. Great! – WesternGun Jul 21 '17 at 09:05
1

Maven stores all of these in it's local Maven2 repository. By default, it will store them in your user home directory under a directory called repository.

You can use the maven-dependency-plugin's goal called copy to take all of your project's dependencies and put them in a folder.

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

frankjl
  • 404
  • 3
  • 12
0
  1. Go to this site: http://jar-download.com/online-maven-download-tool.php

  2. Insert the Maven dependencies XML

  3. Download the jar files as a ZIP.

Uwe334
  • 49
  • 1