Currently we specify the location of local repository in the settings.xml. Is it possible to override this setting via command line or env variable, such that I can use an alternative location sometimes?
            Asked
            
        
        
            Active
            
        
            Viewed 6.7k times
        
    85
            
            
        - 
                    2Possible duplicate of [Specifying Maven's local repository location as a CLI parameter](http://stackoverflow.com/questions/6823462/specifying-mavens-local-repository-location-as-a-cli-parameter) – Ingo Karkat Jun 08 '16 at 06:53
- 
                    It didn't occur to me why this would be useful until now - if you're working on several branches (a release branch, a trunk branch) and the source tree is complex, trying to get compilation to work can be a nightmare if you're just using `1.0-SNAPSHOT` as your version. Having separate .m2 repos circumvents a lot of this. – Sridhar Sarnobat Jan 17 '19 at 18:25
2 Answers
148
            You would need to specify the maven.repo.local parameter to do this.   
mvn package -Dmaven.repo.local=/alternate/repo/location
Here is a related SO question.
- 
                    4The local repository must be an absolute path, https://maven.apache.org/guides/mini/guide-configuring-maven.html. – luka5z Dec 28 '16 at 16:20
- 
                    1@luka5z: Thanks for the important doc ref, but I can say with experience the path can be relative for `--define maven.repo.local=local/repo/here`. Maybe absolute paths are only required for `settings.xml`? – kevinarpe Dec 23 '18 at 14:29
- 
                    
19
            
            
        Use the localRepository setting in your settings.xml file. Example:
<settings>
  <localRepository>/repo</localRepository>
  ...
</settings>
See here for more info.
You can also set the repository via the command line using "-Dmaven.repo.local=" such as:
mvn -U clean install -Dmaven.repo.local=C:\tmp
 
    
    
        Michael
        
- 6,141
- 2
- 20
- 21
- 
                    1We have already done it in our settings.xml. I want to override it when I invoke maven in a shell – Anthony Kong Feb 03 '12 at 05:13
- 
                    1If maven is using that settings.xml, even when you invoke it from a shell, it should pick up that setting. It's very common for windows users to need to set that due to spaces in their home directory "c:\documents and settings\blah" – Michael Feb 03 '12 at 15:52
- 
                    1Just ran a test using "/Users/michael/Desktop/repository " in my settings.xml file. And now when I build anything from command line (or ide) it's putting the artifacts there. – Michael Feb 03 '12 at 15:58
- 
                    1Sorry, misread your question. The answer above is correct. You can use the "-Dmaven.repo.local=/alternate/repo/location" option on the commands. – Michael Feb 03 '12 at 17:41
 
     
     
    