Reputation: 3070
I have maven3.1.1 and maven3.2.5 installed on my mac.
When I do mvn -version it shows maven3.1.1
How can I switch to the other maven version 3.2.5 ?
Upvotes: 3
Views: 26309
Reputation: 3215
I've developed a function for ~/.zshrc and ~/.bashrc files to choose a different maven version according to the project without having to install more maven versions but taking advantage of docker.
So I use my maven installed in my machine with: mvn clean install
And I use my maven in docker with: maven jdk8 clean install
or maven jdk11 package
for example.
Here the function:
# executes a containerized version of maven so you won't have to install to your computer.
# you need to have docker installed and running.
# you can specify 'jdk8' or 'jdk11' as first argument to switch jdk.
# if not specified, jdk11 is the default.
# usage example:
# /your/maven/project/directory - $ maven jdk8 clean install
# /your/maven/project/directory - $ maven clean package
maven() {
if [[ "$1" == "jdk8" ]]; then
docker run --rm -v $PWD:/usr/src/app -v $HOME/.m2:/root/.m2 -w /usr/src/app maven:3.8-adoptopenjdk-8 mvn "${@:2}"
elif [[ "$1" == "jdk11" ]]; then
docker run --rm -v $PWD:/usr/src/app -v $HOME/.m2:/root/.m2 -w /usr/src/app maven:3.8-eclipse-temurin-11 mvn "${@:2}"
else
docker run --rm -v $PWD:/usr/src/app -v $HOME/.m2:/root/.m2 -w /usr/src/app maven:3.8-eclipse-temurin-11 mvn "$@"
fi
}
Upvotes: 0
Reputation: 35
do not use M2_HOME. directly go for export PATH=$PATH:/usr/{maven...path}/bin
Upvotes: 0
Reputation: 5466
Your Current bash profile would be pointing to the maven version 3.1.1 as shown below
~/.bash_profile
export M2_HOME=/Users/yourusername/apache-maven-3.1.1 (Path where you have installed maven 3.1.1)
export PATH=$PATH:$M2_HOME/bin
Change the bash profile as shown below
~/.bash_profile
export M2_HOME=/Users/yourusername/apache-maven-3.2.5 (Maven 3.2.5 path)
export PATH=$PATH:$M2_HOME/bin
Restart the terminal and hit command mvn -version
and now it will be pointing to the latest version.
Upvotes: 4
Reputation: 2867
In your ~/.bash_profile
Download the tar of the maven version you want to use and extract the contents you want to use. Example Maven 3.1.1
export M2_HOME=/Users/<path to maven>/apache-maven-3.1.1
export PATH=$PATH:$M2_HOME/bin
If you have zsh, then change the ~/.zprfile
Upvotes: 0
Reputation: 5487
Using SDKMan might be a simpler way to switch between multiple Maven versions.
1) Install SDKMan which is a one-off thing: http://sdkman.io/install.html
2) Do sdk install maven yourVersion
3) To switch: sdk install maven anotherVersion
4) To switch again: sdk use maven yourVersion
SDKMan should simplify such operations for several other software frameworks like Java, Groovy, Spring, Gradle, etc.
Upvotes: 5
Reputation: 11173
Another way to create a soft link. Suppose you have two version like -
maven-v1 and
maven-v2
Now if you want to use maven-v1 then create a soft link -
ln -s /installation/directory/of/maven-v1 maven
Then in your .bash_profile
export M2_HOME
pointing this directory -
export M2_HOME=/path/to/maven
export PATH=$PATH:$M2_HOME/bin
If you are doing this at first time then you need to restart your terminal.But after that you just need to change the soft link to you expected version. Suppose, now you want to use maven-v2
; just change the existing soft link -
ln -sf /installation/directory/of/maven-v2 maven
Now you don't need to restart the terminal.
Upvotes: 0