Как установить переменные среды для приложения на OSX Mountain Lion?

так как обновление до OSX Mountain Lion У меня возникли проблемы с настройкой переменных окружения для eclipse и maven.

Моя цель - запустить команду maven в Eclipse. Эта команда должна загружать артефакты (разрешать зависимости) из удаленного репозитория. Репозиторий аутентифицируется через HTTPS.

Я следил за Руководство по доступу к удаленному репозиторию через аутентифицированный HTTPS и добавил строки ниже для моего .bash_profil. Если я запускаю maven в терминале, все работает отлично.

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

Но это работает только для терминала, а не для приложений. В предыдущих версиях OSX вам пришлось добавить переменную MAVEN_OPTS в

~/.MacOSX/environment.plist

(см. также Установить переменные среды в Mac OS X Lion). Это отлично работало для OSX Lion.

Но Apple изменила это поведение на Mountain Lion. Я прочитал environment.plist больше не поддерживается, и новый способ - отредактировать Info.plist самого .app(Где переменные системной среды заданы в Mountain Lion?). Кажется, вам нужно добавить словарь LSEnvironment, содержащий все ваши переменные.

<?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>

Как вы видите, я изменил Info.plist моего Eclipse.app. Но это не сработало. Я начинаю maven внутри Eclipse. Но maven не может загрузить артефакты, потому что удаленному репозиторию не доверяют. Я думаю, что Eclipse не использует переменные среды, определенные в Info.plist

Есть ли у вас предложения по решению этой проблемы?

Спасибо за ваши ответы!

Ответы

Ответ 1

К сожалению, это, по-видимому, лучший вариант для установки глобальной переменной окружения в OS X 10.8.x Mountain Lion:

Для переменных временной среды запустите эту команду в Terminal.app и перезапустите все приложения, которым необходимо получить доступ к переменной:

launchctl setenv MYVARIABLE value

Чтобы переменная среды сохранялась при перезагрузке, создайте /etc/launchd.conf и добавьте такую ​​строку для каждой переменной, затем перезагрузите всю систему:

setenv MYVARIABLE value

Это сработало для меня, чтобы установить глобальную переменную среды, которая может быть унаследована IntelliJ IDEA CE 12.0 на OS X 10.8.2. Не очень элегантный, но он работает.

В качестве альтернативы вы можете установить переменную окружения в Terminal.app, а затем запустить приложение, из которого вы хотите получить доступ к переменной среды из командной строки. Запущенное приложение наследует среду от сеанса терминала. В Terminal.app установите переменную среды и запустите другое приложение с помощью команды open -a "App Name":

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

Это открывает IntelliJ IDEA, и мой код может получить доступ к $MYVARIABLE в своей среде.

Ответ 2

Отсюда: fooobar.com/questions/116762/...

#!/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

Затем используйте шаги http://mathiasbynens.be/notes/shell-script-mac-apps, чтобы включить вышеприведенный script в приложение, которое можно сохранить на доке.

Ответ 3

Вы можете установить переменную env непосредственно в eclipse в разделе maven "Конфигурации отладки" → вкладка "Окружающая среда"