java_home - ¿Cómo establecer variables de entorno para una aplicación en OSX Mountain Lion?
variables de entorno linux (4)
desde la actualización a OSX Mountain Lion tengo algunos problemas para configurar las variables de entorno para eclipse y maven.
Mi objetivo es ejecutar un comando de Maven en Eclipse. Este comando necesita descargar artefactos (resolver dependencias) desde un repositorio remoto. El repositorio se autentica a través de HTTPS.
He seguido la Guía de acceso a repositorios remotos a través de HTTPS autenticado y agregué las siguientes líneas a mi .bash_profil. Si estoy corriendo en la terminal, todo funciona bien.
export MAVEN_OPTS="-Xmx512m -Djavax.net.ssl.trustStore=/Users/myUser/.knowncerts/trust.jks -Djavax.net.ssl.trustStorePassword=trustPwd"
Pero esto solo funciona para el terminal y no para las aplicaciones. En versiones anteriores de OSX, tenía que agregar la variable MAVEN_OPTS a
~/.MacOSX/environment.plist
(vea también Establecer variables de entorno en Mac OS X Lion ) Esto funcionó perfectamente para OSX Lion.
Pero Apple ha cambiado este comportamiento en Mountain Lion. He leído que environment.plist ya no es compatible y la nueva forma es editar Info.plist de .app ( ¿Dónde están establecidas las variables de entorno del sistema en Mountain Lion? ). Parece que tienes que agregar un diccionario LSEnvironment contenga todas tus variables.
<?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>
Como puede ver, cambié la lista de información de mi Eclipse.app. Pero esto no funciono. Comienzo maven dentro de Eclipse. Pero maven no puede descargar los artefactos, porque el repositorio remoto no es confiable. Creo que Eclipse no usa las variables de entorno que definí en la lista de información.
¿Tiene alguna sugerencia de cómo resolver este problema?
¡Gracias por tus respuestas!
Desafortunadamente, esta parece ser la mejor opción para establecer una variable de entorno global en OS X 10.8.x Mountain Lion:
- https://.com/a/588442/705157
Para las variables de entorno temporales, ejecute este comando en Terminal.app y reinicie cualquier aplicación que necesite acceder a la variable:
launchctl setenv MYVARIABLE value
Para hacer que una variable de entorno sea persistente en los reinicios, cree /etc/launchd.conf
y agregue una línea como esta para cada variable, luego reinicie todo el sistema:
setenv MYVARIABLE value
Esto me sirvió para establecer una variable de entorno global que podría ser heredada por IntelliJ IDEA CE 12.0 en OS X 10.8.2. No muy elegante, pero funciona.
Alternativamente, puede establecer la variable de entorno en Terminal.app, luego iniciar la aplicación desde la que desea acceder a la variable de entorno desde la línea de comandos. La aplicación iniciada heredará el entorno de su sesión de terminal. En Terminal.app, establezca la variable de entorno e inicie otra aplicación con un comando como open -a "App Name"
:
export MYVARIABLE=value
open -a "IntelliJ IDEA 12 CE"
Esto abre IntelliJ IDEA, y mi código puede acceder a $MYVARIABLE
en su entorno.
Desde aquí: https://.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
Luego, siga los pasos en http://mathiasbynens.be/notes/shell-script-mac-apps , para convertir el script anterior en una aplicación que se puede mantener en el dock.
Pasos de comandos en la ventana de terminal:
- vi ~ / .bash_profile
- Presione i (para poner el editor vi en modo de edición)
- Ingrese la variable de entorno en la ventana del editor vi
- por ejemplo, export JAVA_HOME = / Users / Shared / Jenkins / Home / tools / hudson.model.JDK / java8
- tecla esc seguida de: wq
- fuente ~ / .bash_profile
Puede configurar la variable env directamente en eclipse en la pestaña "Configuraciones de depuración" -> pestaña "Entorno"