I have defined a local mirror for all repositories in the settings.xml file:
<mirror>
<id>myMirror</id>
<mirrorOf>*</mirrorOf>
<url>file://${mypath}/maven/.m2/repository</url>
</mirror>
I want that my mirror to point to a local path, in this case the path is:
file://${mypath}/maven/.m2/repository
Where ${mypath} is a variable that I pass when I invoke Maven:
mvn -Dmypath="/D:/test" package
The problem is that Maven does not replace the variable when it is invoked. I can see that this error is happening by inspection of the build log. For example, Maven reports that it is downloading a file from file://${mypath}/maven/.m2/repository when the correct would be file:///D:/test/maven/.m2/repository.
I have also noted that Maven replaces correctly my variable when it is inserted in the url child tag of the repository tag:
<repository>
<id>central</id>
<url>http://${mypath}/maven/.m2/repository</url>
</repository>
The build works correctly when I replace the variable in my settings.xml by the complete URL like in the example below:
<mirror>
<id>myMirror</id>
<mirrorOf>*</mirrorOf>
<url>file:///D:test/maven/.m2/repository</url>
</mirror>