oSX Mountain Lionにアップグレードしてから、EclipseとMavenの環境変数の設定に問題が発生しました。
私の目標は、EclipseでMavenコマンドを実行することです。このコマンドは、リモートリポジトリからアーティファクトをダウンロード(依存関係を解決)する必要があります。リポジトリは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で環境変数を設定する も参照)これはOSXLionで完全に機能しました。
しかし、AppleはMountainLionでのこの動作を変更しました。environment.plistはサポートされなくなり、新しい方法は.app自体のInfo.plistを編集することです(- 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>
ご覧のとおり、Eclipse.appのInfo.plistを変更しました。しかし、これはうまくいきませんでした。 Eclipse内でMavenを開始します。ただし、リモートリポジトリが信頼されていないため、Mavenはアーティファクトをダウンロードできません。 EclipseはInfo.plistで定義した環境変数を使用しないと思います
この問題を解決する方法について何か提案はありますか?
あなたの答えをありがとう!
残念ながら、これはOS X 10.8.x MountainLionでグローバル環境変数を設定するための最良のオプションのようです。
一時的な環境変数の場合は、Terminal.appで次のコマンドを実行し、変数にアクセスする必要があるすべてのアプリを再起動します。
launchctl setenv MYVARIABLE value
再起動後も環境変数を永続的にするには、/etc/launchd.conf
を作成し、変数ごとに次のような行を追加してから、システム全体を再起動します。
setenv MYVARIABLE value
これは、IntelliJ IDEA CE 12.0 on OS X 10.8.2で継承できるグローバル環境変数を設定するのに役立ちました。あまりエレガントではありませんが、機能します。
または、Terminal.appで環境変数を設定してから、コマンドラインから環境変数にアクセスするアプリを起動することもできます。起動したアプリは、ターミナルセッションから環境を継承します。 Terminal.appで、環境変数を設定し、open -a "App Name"
のようなコマンドで別のアプリを起動します。
export MYVARIABLE=value
open -a "IntelliJ IDEA 12 CE"
これによりIntelliJIDEAが開き、私のコードはその環境の$MYVARIABLE
にアクセスできます。
Eclipseのmavenの[デバッグ構成]-> [環境]タブでenv変数を直接設定できます。
ここから: 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
次に、 http://mathiasbynens.be/notes/Shell-script-mac-apps の手順を使用して、上記のスクリプトをドックに保持できるアプリケーションに変換します。
ターミナルウィンドウでのコマンドの手順: