4

I'm trying to know whether it's possible to export/copy dependencies of a project managed using Maven while maintaining the folder structure that is adopted in the local repository.

The root of my need is that I have amassed through almost ten years a lot of artifacts in my local repository (~8GB). I am no longer working on those old projects from previous assignments that drew most of the artifacts in and now, I need to move just what is needed for one single project (~650MB of artifacts) to a different computer. I can't just set the other computer to download artifacts again because many of these artifacts were retrieved from a local Nexus proxy in previous assignments. Moreover, I don't have the source code for these artifacts so I can't just install them.

dependency:copy-dependencies doesn't do the trick because all artifacts are simply dumped in a single folder, instead of having say .m2\repository\mysql\mysql-connector-java\5.1.38\mysql-connector-java-5.1.38.jar

I believe my question can also be rephrased as “How can I extract from my local Maven repository a subset of the repository that is related to only one specific project?”

A_Di-Matteo
  • 26,902
  • 7
  • 94
  • 128
AbVog
  • 1,435
  • 22
  • 35

2 Answers2

5

You can actually use the Maven Dependency Plugin and its copy-dependencies goal, as you mentioned.

What you actually missed is its useRepositoryLayout option

Place each artifact in the same directory layout as a default repository.
example: /outputDirectory/junit/junit/3.8.1/junit-3.8.1.jar.

  • Type: boolean.
  • Since: 2.0-alpha-2.
  • Required: No.
  • User Property: mdep.useRepositoryLayout.
  • Default: false.

You could hence execute - as an example - the following:

mvn dependency:copy-dependencies -Dmdep.useRepositoryLayout=true \
    -DoutputDirectory=.m2/repository
A_Di-Matteo
  • 26,902
  • 7
  • 94
  • 128
0

If you missing some dependency, then download that dependencies from other source and paste it in your .m2(maven local repository ) folder.