- Parent Category: Framework
- Category: Apache Maven
The Maven Dependency Plugin among other things include a
The dependency plugin provides the capability to manipulate artifacts. It can copy and/or unpack artifacts from local or remote repositories to a specified location.
This Apache Maven plugin is really feature rich and provide a lot of interesting goals:
- dependency:analyze analyzes the dependencies of this project and determines which are: used and declared; used and undeclared; unused and declared.
- dependency:analyze-dep-mgt analyzes your projects dependencies and lists mismatches between resolved dependencies and those listed in your dependencyManagement section.
- dependency:analyze-only is the same as analyze, but is meant to be bound in a pom. It does not fork the build and execute test-compile.
- dependency:analyze-report analyzes the dependencies of this project and produces a report that summarises which are: used and declared; used and undeclared; unused and declared.
- dependency:analyze-duplicate analyzes the dependencies/ and dependencyManagement/ tags in the pom.xml and determines the duplicate declared dependencies.
- dependency:build-classpath tells Maven to output the path of the dependencies from the local repository in a classpath format to be used in java -cp. The classpath file may also be attached and installed/deployed along with the main artifact.
- dependency:copy takes a list of artifacts defined in the plugin configuration section and copies them to a specified location, renaming them or stripping the version if desired. This goal can resolve the artifacts from remote repositories if they don't exist in local.
- dependency:copy-dependencies takes the list of project direct dependencies and optionally transitive dependencies and copies them to a specified location, stripping the version if desired. This goal can also be run from the command line.
- dependency:get downloads a single artifact transitively from a specified remote repository.
- dependency:go-offline tells Maven to resolve everything this project is dependent on (dependencies, plugins, reports) in preparation for going offline.
- dependency:list alias for resolve that lists the dependencies for this project.
- dependency:properties set a property for each project dependency containing the to the artifact on the file system.
- dependency:purge-local-repository tells Maven to clear all dependency-artifact files out of the local repository, and optionally re-resolve them.
- dependency:resolve tells Maven to resolve all dependencies and displays the version.
- dependency:resolve-plugins Tells Maven to resolve plugins and their dependencies.
- dependency:sources tells Maven to resolve all dependencies and their source attachments, and displays the version.
- dependency:tree displays the dependency tree for this project.
- dependency:unpack removes the project dependencies from the local repository, and optionally re-resolve them.
- dependency:unpack-dependencies like copy-dependencies but unpacks
It can be use to make the build failing (There is another way to do this using the enforcer plugin as well)
To detect duplicate dependencies just run against your pom
When you have found the duplicate you can query and analyze why it was included by running
mvn dependency:tree -Dverbose -Dincludes=:xerces*::
or use M2Eclipse dependencies graph or dependency tree that support highlighting and query with wildcards as well. I like especially this solution because I can right click on any dependencies and select “add exclusions” and let M2Eclipse modify the pom.xml for me.
You might like also
There is so many case where it is desirable to pull down artifact from Sonatype Nexus
using REST API, unfortunately Nexus
3.x Rest API are still under development... Some use cases in Nexus 2.x: You have a script that uses REST
call to pull down the LATEST maven artifacts every night from Nexus and deploys them. You make extensive use of the REST
API in all your puppet modules You use the Atlassian Puppet
module for Nexus for creating repository, …
844 Days ago
When working with many feature/release/bugix/hotfix branches, it is a bad idea to start changing the pom version as this will create merge conflicts using pull request. this plugin allow you to keep in ALL branches the same pom version for all your projects, for example MASTER-SNAPSHOT the version will be derived from branch name automagically :-) You may want to read more first these 2 short articles Update Maven pom version on GIT checkout in TeamCity maven-release-plugin with GIT git-branch-renamer-maven-plugin …
856 Days ago
Some time ago I was asked if I would like to write a review about one of the new video courses from Packt Publishing. It was "Getting Started with Apache Maven
" http://bit.ly/1fycmpP by Russell Gold and since I have been using Maven for some years now (since 2007) and did publish some articles myself, I thought it would be nice to help them promote Apache Maven
. The course is organized in eight chapters, forty videos with a length between two …
2043 Days ago
Here is a solution to the following problems Deriving Maven
artifact version from GIT
branch, Update pom version on GIT
checkout automatically, Add the ability to use Pull request with Apache Maven
. You have a workflow requirement that require you to have the artifact version of a module externally defined from the current branch in GIT
. For example You want to start working on a new feature branch “feature-memory-improvement”, so you branch from master a new branch named feature/feature-memory-improvement Having …
2048 Days ago
2530 Days ago
Here is 3 different way to control the lifetime a local Tomcat 7 container using Apache Maven
. A typical scenario would be to start a servlet container prior to running integration tests (Selenium, SAHI or using any other framework you can think of ) With the following examples, you will be able to start an instance of Tomcat 7 running your web application in the pre-integration-test phase and stop the instance in the post-integration-test phase. You can also decide to …
2530 Days ago
I will show you in an Apache Maven
configuration file how to copy files to server each time the package phase is executed. Solution with Ant SCP task This snippet of code is a ready to use code that make use of Apache Ant task scp, Just put this snippet of code in your Maven
module where the assembly is executed or anywhere else to push all tar.gz files to a server just run a maven
mvn package, you can …
2718 Days ago
In this small post, I’ll show you how to remove duplicated resources in the Open Resource view of Eclipse
Eclipse – M2Eclipse – Subversive …
2724 Days ago
; First a big thanks to Packt Publishing for having sent me this book to review! I did enjoy going through this book, while I did not learn a lot of new stuff (I am using Apache Maven
daily since 2006!), I found it to be concise and would recommend it anytime to any of my colleagues. But let’s go through my review of this cookbook of over 50 recipes towards optimal Java
Software Engineering with Maven
3: Apache Maven
2866 Days ago
Thanks to Packt Publishing for having sent me this book to review. I will publish a review in the next coming days Grasp the fundamentals and extend Apache Maven
3 to meet your needs Implement engineering practices in your application development process with Apache Maven
Collaboration techniques for Agile teams with Apache Maven
Use Apache Maven
, Enterprise Frameworks, and various other cutting-edge technologies Develop for Google Web Toolkit, Google App Engine, and Android Platforms using Apache Maven
2912 Days ago