Reputation: 23505
maven-dependency-plugin:copy
copies a single jar. I need to copy the jar and the pom to the appropriately named path in accordance with repository structure.
Use case: My project has a local repository, where I keep non-public dependencies. The dependencies are projects that I build on my machine and which get installed to the local machine's repository. After I copy the artifacts to the project's local repository, I can build the project on any machine which doesn't have the sources of the other projects. Using a project local repository is easy. You just need a folder with a particular directory structure and include this in the POM:
<repositories>
<repository>
<id>in-project</id>
<name>In Project Repo</name>
<url>file://${project.basedir}/libs</url>
</repository>
</repositories>
However, copying stuff into the local repo is an extra step I'd like to avoid. maven-dependency-plugin:copy
almost does what I need.
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.8</version>
<executions>
<execution>
<id>copy-private-dependencies</id>
<phase>prepare-package</phase>
<goals>
<goal>copy</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>...</groupId>
<artifactId>...</artifactId>
</artifactItem>
</artifactItems>
<outputDirectory>${project.basedir}/libs</outputDirectory>
<overWriteReleases>true</overWriteReleases>
<overWriteSnapshots>true</overWriteSnapshots>
<overWriteIfNewer>true</overWriteIfNewer>
</configuration>
</execution>
</executions>
</plugins>
</build>
But it just copies the dependency's jar, without the pom and without the necessary directory structure.
Upvotes: 4
Views: 4684
Reputation: 56
Use the maven-dependency-plugin:copy-dependencies
goal instead. If useRepositoryLayout
and copyPom
properties are set to true, it will create such a local repository.
The goal can be called from the command line as:
mvn org.apache.maven.plugins:maven-dependency-plugin:3.0.2:copy-dependencies -Dmdep.useRepositoryLayout=true -Dmdep.copyPom=true -DoutputDirectory=./repository-exported
Upvotes: 4
Reputation: 1478
I have written a proof-of-concept about that. You can try it out:
https://github.com/Jintin/syndle
For example, if you like to download "group:name:version"
at "jcenter.bintray.com"
into your local Maven repository, you can execute the following command:
syndle clone -p group:name:version -s https://jcenter.bintray.com
Upvotes: 1