42¢ glxn.net

mvnr: recursive mvn command runner

I recently had an issue with many Maven repositories being part of the same project source code, while not sharing a common aggregate pom. Although the rationale behind a setup like this is often well justified, that does not make it any easier for developers working on source code across such a scattered strucutre. With this in mind I decided to create a node command line tool which recursively runs any supplied maven command on all maven projects found under the current working directory. MVNR does an honest attempt at figuring out which of the known maven artifacts need to be built first. In other words mvnr tries to figure out which of the artifacts under the current working directory needs to be built first in order for other artifacts to successfully be built with these as dependencies, recursively.


mvnr is available from npm by issuing the following command:

npm install -g mvnr

After this you can run maven commands as you normally would by issuing the ‘mvnr’ command, and mvnr will figure out what directories it needs to run them on.

mvnr clean install


since mvnr uses ‘mvn -f’, which some plugins unfortunately do not respect, you may have pom configurations which have plugins using relative paths which assume cwd. This will not work very well.

comments powered by Disqus

Moar stuffs

12 Sep 2017 Building an executable WS client using maven and metro
07 Jun 2015 Deploy an Ember app to gh-pages using npm run-script
06 Jun 2015 JSON Contract testing using unit tests to assert full stack integration across REST services
03 May 2015 simple http serve a directory from terminal
07 Jan 2014 civu, a CLI for cloning git repositories from jenkins views
06 Jan 2014 PyramidSort, a Sublime Text plugin for for reformatting text
05 Jan 2014 Git commit-message hook for JIRA issue tags
31 May 2013 hacking kitchen tiles with coffeescript
30 May 2013 Nuke, ps grep kill something
24 May 2013 mvnr: recursive mvn command runner
23 May 2013 Query By Example for JPA
22 May 2013 gitr: recursive git command runner
21 May 2013 Keeping gh-pages branch in sync with master
19 May 2013 Migrated from wordpress to jekyll and github pages
14 Aug 2012 Using Sublime Text 2 as git commit message editor
10 Mar 2012 QRGen, a small wrapper on top of ZXING for generating QRCodes in java
04 Jan 2012 My Bash PS1 with git branch info
17 Aug 2010 Making a swing project using IntelliJ IDEA GUI builder with maven, Including executable jar
01 May 2010 Using Arquillian to test against a remote jboss container from within IDEA
06 Apr 2010 WELD/CDI lightningtalk from Know IT 2010 annual conference
03 Apr 2010 Solving Sudoku using java swing and junit
01 Mar 2010 Simple CDI/WELD login example
01 Mar 2010 Implementing @RequestParam in CDI/WELD using Qualifier and InjectionPoint as @HttpParam
01 Nov 2009 Seam Maven Refimpl