Daniel Hiller

Geek, programmer, father
I'm a software engineer with more than 20 years of work experience.
I strive to create software that is useful for people so they can do stuff that matters.

Don't forget that thenThrow returns an OngoingStubbing instance *sigh*
All posts
Update all git repos via cmd line in a subdir

Run multiple Intellij version installations on linux

2016-11-18

linux intellij ide configuration 

I love Intellij very much. I like the jetbrains EAP program for trying out new features of the IDE. After being screwed a couple of times replacing a working installation by a faulty one, I elaborated a way of keeping several versions of Intellij in parallel.

As a side note: I’m reporting about a Linux Mint 18 install but I guess most other linux distributions will have minor adjustments to get this approach working.

First of all I like to keep all versions and needed files in a dedicated folder in /opt/IDEA. I have them symlinked so I can more easily switch versions:

/opt/IDEA ‹›
╰─$ ls -la    
insgesamt 24
drwxr-xr-x  6 dhiller dhiller 4096 Nov 17 11:17 .
drwxr-xr-x 13 root    root    4096 Nov 16 15:59 ..
lrwxrwxrwx  1 dhiller dhiller   13 Nov 14 17:20 current -> idea-2016.2.5
lrwxrwxrwx  1 dhiller dhiller   11 Nov  9 09:29 eap -> idea-2016.3
lrwxrwxrwx  1 dhiller dhiller   19 Okt 20 08:18 idea-2016.2.5 -> idea-IU-162.2228.15
lrwxrwxrwx  1 dhiller dhiller   19 Nov 17 11:09 idea-2016.3 -> idea-IU-163.7743.37
drwxr-xr-x  9 dhiller dhiller 4096 Okt 20 08:17 idea-IU-162.2228.15
drwxr-xr-x  9 dhiller dhiller 4096 Nov  9 09:29 idea-IU-163.7342.3
drwxr-xr-x  9 dhiller dhiller 4096 Nov 14 08:50 idea-IU-163.7743.17
drwxr-xr-x  9 dhiller dhiller 4096 Nov 17 11:09 idea-IU-163.7743.37
lrwxrwxrwx  1 root    root      37 Sep  7 11:56 idea.vmoptions -> /home/dhiller/bin/IDEA/idea.vmoptions
lrwxrwxrwx  1 root    root      43 Sep  7 11:56 run_idea_with_env.sh -> /home/dhiller/bin/IDEA/run_idea_with_env.sh

First of all I have a file where my Intellij options are stored:

File: /opt/IDEA/idea.vmoptions

-Xms1G
-Xmx2G
-XX:MaxPermSize=512m
-XX:ReservedCodeCacheSize=512m
-XX:+UseConcMarkSweepGC
-XX:SoftRefLRUPolicyMSPerMB=50
-ea
-Dsun.io.useCanonCaches=false
-Djava.net.preferIPv4Stack=true
-XX:+HeapDumpOnOutOfMemoryError
-XX:-OmitStackTraceInFastThrow
-Dawt.useSystemAAFontSettings=on
-Dswing.aatext=true
-Dsun.java2d.xrender=true

Then I have a shell script:

File: run_idea_with_env.sh

#!/bin/bash

if [ ! -d "/opt/IDEA/$1" ]; then
        echo "Usage: $0 "
        exit 1
fi

# set environment variables
export JAVA_HOME="/usr/lib/jvm/default-java/"
export IDEA_VM_OPTIONS="/opt/IDEA/idea.vmoptions"

/opt/IDEA/$1/bin/idea.sh

Last but not least I have two or three desktop definitions to be able to start the IDE from the Menu in ~/.local/share/applications:

File: jetbrains-idea.desktop

#!/usr/bin/env xdg-open
[Desktop Entry]
Version=1.0
Type=Application
Name=IntelliJ IDEA
Icon=/opt/IDEA/current/bin/idea.png
Exec="/opt/IDEA/run_idea_with_env.sh" current
Comment=The Drive to Develop
Categories=Development;IDE;
Terminal=false
StartupWMClass=jetbrains-idea

File: jetbrains-idea-eap.desktop

#!/usr/bin/env xdg-open
[Desktop Entry]
Version=1.0
Type=Application
Name=IntelliJ IDEA EAP
Icon=/opt/IDEA/eap/bin/idea.png
Exec="/opt/IDEA/run_idea_with_env.sh" eap
Comment=The Drive to Develop
Categories=Development;IDE;EAP
Terminal=false
StartupWMClass=jetbrains-idea

The key point is the line starting with Exec that points to the version to start:

Exec="/opt/IDEA/run_idea_with_env.sh" current

But you just could start the IDE from a terminal with:

$ /opt/IDEA/run_idea_with_env.sh current

for starting the latest stable or

$ /opt/IDEA/run_idea_with_env.sh eap

for starting the latest EAP version,

When installing a new version I just download it, untar it into /opt/IDEA, change the symlink to point to the new version, and that’s it.

Related posts:

Don't forget that thenThrow returns an OngoingStubbing instance *sigh*
All posts
Update all git repos via cmd line in a subdir

Creative Commons License This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License. Last update on 2023-11-29. Built by dhiller using Atom (editor), Jekyll (site builder), OneDark vivid (syntax highlighting theme), Webjeda (related posts), Disqus (discussions), Github Pages (hosting), Cloudflare (DNS).