Downloading all maven dependencies to a directory NOT in repository?

MavenDownloadDependencies

Maven Problem Overview


I started to convert my project to maven because I needed to use a library that was distributed in binary form over maven only, but after banging my head against the wall on it for far too long I've decided to stop hurting myself and just use Ant. I'd like to just have maven download the jar and all of its transitive dependencies into a directory of my choosing so I can just check them into my SCM as I normally enjoy and be a blissful developer once again.
Any ideas how to do that easily?

Maven Solutions


Solution 1 - Maven

The maven dependency plugin can potentially solve your problem.

If you have a pom with all your project dependencies specified, all you would need to do is run

mvn dependency:copy-dependencies

and you will find the target/dependencies folder filled with all the dependencies, including transitive.

Adding Gustavo's answer from below: To download the dependency sources, you can use

mvn dependency:copy-dependencies -Dclassifier=sources

(via Apache Maven Dependency Plugin doc).

Solution 2 - Maven

I finally figured out a how to use Maven. From within Eclipse, create a new Maven project.

Download Maven, extract the archive, add the /bin folder to path.

Validate install from command-line by running mvn -v (will print version and java install path)

Change to the project root folder (where pom.xml is located) and run:

mvn dependency:copy-dependencies

All jar-files are downloaded to /target/dependency.

To set another output directory:

mvn dependency:copy-dependencies -DoutputDirectory="c:\temp"

Now it's possible to re-use this Maven-project for all dependency downloads by altering the pom.xml

Add jars to java project by build path -> configure build path -> libraries -> add JARs..

Solution 3 - Maven

Based on @Raghuram answer, I find a tutorial on Copying project dependencies, Just:

  1. Open your project pom.xml file and find this:

     <project>
       [...]
       <build>
         <plugins>
           ...
         </plugins>
       </build>
       [...]
     </project>
    
  2. Than replace the <plugins> ... </plugins> with:

     <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>
    
  3. And call maven within the command line mvn dependency:copy-dependencies

After it finishes, it will create the folder target/dependency within all the jar's dependencies on the current directory where the pom.xml lives.

Solution 4 - Maven

I found the next command

mvn dependency:copy-dependencies -Dclassifier=sources

here maven.apache.org

Solution 5 - Maven

Please check if you have some config files in ${MAVEN_HOME}/conf directory like settings.xml. Those files overrides settings from .m2 folder and because of that, repository folder from .m2 might not be visible or discarded.

Solution 6 - Maven

My simple script based on user based on Raghuram.

getmvndep.sh

#!/bin/bash
groupId=$1
artifactId=$2
version=$3
echo "<project>"                                                      > pom.xml
echo "  <modelVersion>4.0.0</modelVersion>"                          >> pom.xml
echo "  <groupId>com.temp.temp</groupId>"                            >> pom.xml
echo "  <artifactId>temp</artifactId>"                               >> pom.xml
echo "  <packaging>jar</packaging>"                                  >> pom.xml
echo "  <version>0.0.0</version>"                                    >> pom.xml
echo "  <dependencies>"                                              >> pom.xml
echo "    <dependency>"                                              >> pom.xml
echo  "     <groupId>${groupId}</groupId>"                           >> pom.xml
echo  "     <artifactId>${artifactId}</artifactId>"                  >> pom.xml
echo  "     <version>${version}</version>"                           >> pom.xml
echo "    </dependency>"                                             >> pom.xml
echo "  </dependencies>"                                             >> pom.xml
echo "  <build>"                                                     >> pom.xml
echo "    <plugins>"                                                 >> pom.xml
echo "    </plugins>"                                                >> pom.xml
echo "  </build>"                                                    >> pom.xml
echo "</project>"                                                    >> pom.xml
mvn dependency:copy-dependencies -DoutputDirectory="./libs/${version}"
rm pom.xml

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionchubbsondubsView Question on Stackoverflow
Solution 1 - MavenRaghuramView Answer on Stackoverflow
Solution 2 - MavenBaked InhalfView Answer on Stackoverflow
Solution 3 - MavenuserView Answer on Stackoverflow
Solution 4 - MavenGustavoView Answer on Stackoverflow
Solution 5 - MavenMagGGGView Answer on Stackoverflow
Solution 6 - MavenPatrik PolakView Answer on Stackoverflow