eureka19
eureka19

Reputation: 3070

How to switch between maven version in mac

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

Answers (6)

Alessandro Argentieri
Alessandro Argentieri

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

Abhinav Porwal
Abhinav Porwal

Reputation: 35

do not use M2_HOME. directly go for export PATH=$PATH:/usr/{maven...path}/bin

Upvotes: 0

Clement Amarnath
Clement Amarnath

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

slal
slal

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

phanin
phanin

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

Razib
Razib

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

Related Questions