2012-08-28 5 views
14

seit dem Upgrade auf OSX Mountain Lion habe ich einige Probleme mit der Einstellung der Umgebungsvariablen für Eclipse und Maven.Wie legen Sie Umgebungsvariablen für eine Anwendung auf OSX Mountain Lion fest?

Mein Ziel ist es, einen Maven-Befehl in Eclipse auszuführen. Dieser Befehl muss Artefakte (Abhängigkeiten auflösen) von einem Remote-Repository herunterladen. Das Repository wird über HTTPS authentifiziert.

Ich habe die Guide to Remote repository access through authenticated HTTPS gefolgt und die Zeilen unten zu meinem .bash_profil hinzugefügt. Wenn ich Maven im Terminal laufe, funktioniert alles gut.

export MAVEN_OPTS="-Xmx512m -Djavax.net.ssl.trustStore=/Users/myUser/.knowncerts/trust.jks -Djavax.net.ssl.trustStorePassword=trustPwd" 

Aber das funktioniert nur für das Terminal und nicht für Anwendungen. Bei früheren OSX-Versionen mussten Sie die MAVEN_OPTS Variable

~/.MacOSX/environment.plist 

(siehe auch Set environment variables on Mac OS X Lion) Dieser arbeitete für OSX Lion perfekt hinzuzufügen.

Aber Apple hat dieses Verhalten auf Mountain Lion geändert. Ich habe gelesen, dass die environment.plist nicht mehr unterstützt wird und die neue Möglichkeit ist, die Info.plist der .app selbst zu bearbeiten (Where are system environment variables set in Mountain Lion?). Es scheint, dass Sie ein LSEnvironment Wörterbuch hinzufügen müssen, das alle Sie Variablen enthält.

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<dict> 
    <key>LSEnvironment</key> 
    <dict> 
     <key>M2_HOME</key> 
     <string>/usr/share/maven</string> 
     <key>MAVEN_OPTS</key> 
     <string>-Xmx512m -Djavax.net.ssl.trustStore=/Users/myUser/.knowncerts/trust.jks -Djavax.net.ssl.trustStorePassword=trustPwd</string> 
    </dict> 
    <key>CFBundleExecutable</key> 
    <string>eclipse</string> 
    <key>CFBundleGetInfoString</key> 
    <string>Eclipse 3.8 for Mac OS X, Copyright IBM Corp. and others 2002, 2011. All rights reserved.</string> 
    <key>CFBundleIconFile</key> 
    <string>Eclipse.icns</string> 
    <key>CFBundleIdentifier</key> 
    <string>org.eclipse.eclipse</string> 
    <key>CFBundleInfoDictionaryVersion</key> 
    <string>6.0</string> 
    <key>CFBundleName</key> 
    <string>Eclipse</string> 
    <key>CFBundlePackageType</key> 
    <string>APPL</string> 
    <key>CFBundleShortVersionString</key> 
    <string>3.8</string> 
    <key>CFBundleSignature</key> 
    <string>????</string> 
    <key>CFBundleVersion</key> 
    <string>3.8</string> 
    <key>CFBundleDevelopmentRegion</key> 
    <string>English</string> 
    <key>CFBundleLocalizations</key> 
    <array> 
     <string>ar</string> 
     <string>cs</string> 
     <string>da</string> 
     <string>el</string> 
     <string>en</string> 
     <string>es</string> 
     <string>de</string> 
     <string>fi</string> 
     <string>fr</string> 
     <string>hu</string> 
     <string>it</string> 
     <string>iw</string> 
     <string>ja</string> 
     <string>ko</string> 
     <string>nl</string> 
     <string>no</string> 
     <string>pl</string> 
     <string>pt_BR</string> 
     <string>pt</string> 
     <string>ru</string> 
     <string>sv</string> 
     <string>tr</string> 
     <string>zh_HK</string> 
     <string>zh_TW</string> 
     <string>zh</string> 
    </array> 
    <key>Eclipse</key> 
    <array> 
     <string>-keyring</string> 
     <string>~/.eclipse_keyring</string> 
     <string>-showlocation</string> 
    </array> 
</dict> 
</plist> 

Wie Sie sehen können, habe ich die Info.plist meiner Eclipse.app geändert. Aber das hat nicht funktioniert. Ich starte Maven in Eclipse. Aber Maven kann die Artefakte nicht herunterladen, da das Remote-Repository nicht vertrauenswürdig ist. Ich denke, Eclipse verwendet nicht die Umgebungsvariablen, die ich in der Info.plist definiert habe.

Haben Sie Vorschläge, wie Sie dieses Problem lösen können?

Vielen Dank für Ihre Antworten!

Antwort

1

Von hier aus: https://stackoverflow.com/a/10374886/325742

#!/bin/sh 
# 
export MAVEN_OPTS=#MAVEN_OPTS_HERE# 
LAUNCHER_JAR=/Applications/eclipse/plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar 

java \ 
-showversion \ 
-XX:MaxPermSize=256m \ 
-Xms1024m \ 
-Xmx1024m \ 
-Xdock:icon=/Applications/eclipse/Eclipse.app/Contents/Resources/Eclipse.icns \ 
-XstartOnFirstThread \ 
-Dorg.eclipse.swt.internal.carbon.smallFonts \ 
-Dosgi.requiredJavaVersion=1.5 \ 
-jar $LAUNCHER_JAR 

Verwenden Sie dann die Schritte auf http://mathiasbynens.be/notes/shell-script-mac-apps, das Skript in eine Anwendung zu machen, die auf dem Dock gehalten werden kann.

+0

Danke für die schnelle Antwort! – Loki

+0

Leider hat das mein Problem nicht gelöst. Wenn ich Eclipse mit dem Skript starte, wird immer noch nicht 'MAVEN_OPTS' verwendet. Wenn ich zum Beispiel ein anderes 'M2_HOME' exportiere, verwendet Eclipse dieses neue Maven-Home. – Loki

1

Sie env Variable direkt in Eclipse unter Maven einstellen "Debug-Konfigurationen" -> Register "Umgebung"

19

Leider scheint dies die beste Option zu sein, um eine globale Umgebungsvariable in OS X 10.8.x Berg zur Einstellung Lion:

Für temporäre Umgebungsvariablen, führen Sie diesen Befehl in Terminal.app, und starten Sie alle Anwendungen, die die Variable zugreifen müssen:

launchctl setenv MYVARIABLE value 

Um eine Umgebungsvariable persistent über Neustarts zu machen, erstellen /etc/launchd.conf und eine Zeile wie diese für jede Variable hinzufügen, dann das gesamte System neu starten:

setenv MYVARIABLE value 

Das ist für mich gearbeitet, um eine globale Umwelt zu setzen Variable, die von IntelliJ IDEA CE 12.0 unter OS X 10.8.2 übernommen werden könnte. Nicht sehr elegant, aber es funktioniert.

Alternativ können Sie die Umgebungsvariable in Terminal.app festlegen und dann die App starten, von der Sie über die Befehlszeile auf die Umgebungsvariable zugreifen möchten. Die gestartete App erbt die Umgebung von Ihrer Terminalsitzung. In Terminal.app, setzen Sie die Umgebungsvariable, und starten Sie eine andere App mit einem Befehl wie open -a "App Name":

export MYVARIABLE=value 
open -a "IntelliJ IDEA 12 CE" 

Dies eröffnet IDEA IntelliJ, und mein Code $MYVARIABLE in seiner Umgebung zugreifen können.