Lok*_*oki 15 java eclipse environment-variables maven osx-mountain-lion
自从升级到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"
Run Code Online (Sandbox Code Playgroud)
但这只适用于终端而不适用于应用程序.在以前的OSX版本中,您必须添加MAVEN_OPTS变量
~/.MacOSX/environment.plist
Run Code Online (Sandbox Code Playgroud)
(另请参阅在Mac OS X Lion上设置环境变量)这对OSX Lion完美有效.
但是Apple已经在Mountain Lion上改变了这种行为.我已经阅读了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>
Run Code Online (Sandbox Code Playgroud)
如您所见,我更改了Eclipse.app的Info.plist.但这没效果.我在Eclipse中启动maven.但maven无法下载文物,因为远程存储库不受信任.我认为Eclipse不使用我在Info.plist中定义的环境变量
您有什么建议如何解决这个问题?
谢谢你的回答!
Ste*_*HHH 23
不幸的是,这似乎是在OS X 10.8.x Mountain Lion中设置全局环境变量的最佳选择:
对于临时环境变量,请在Terminal.app中运行此命令,然后重新启动需要访问该变量的所有应用程序:
launchctl setenv MYVARIABLE value
Run Code Online (Sandbox Code Playgroud)
要使环境变量在重新启动后/etc/launchd.conf
保持不变,请为每个变量创建并添加这样的行,然后重新启动整个系统:
setenv MYVARIABLE value
Run Code Online (Sandbox Code Playgroud)
这对我来说设置了一个全局环境变量,可以由OS X 10.8.2上的IntelliJ IDEA CE 12.0继承.不是很优雅,但它的工作原理.
或者,您可以在Terminal.app中设置环境变量,然后从命令行启动要从中访问环境变量的App.启动的应用程序将从终端会话继承环境.在Terminal.app中,设置环境变量并使用如下命令启动另一个应用程序open -a "App Name"
:
export MYVARIABLE=value
open -a "IntelliJ IDEA 12 CE"
Run Code Online (Sandbox Code Playgroud)
这将打开IntelliJ IDEA,我的代码可以$MYVARIABLE
在其环境中访问.
从这里: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
Run Code Online (Sandbox Code Playgroud)
然后,使用http://mathiasbynens.be/notes/shell-script-mac-apps上的步骤,将上述脚本转换为可以保留在 Dock 上的应用程序。
归档时间: |
|
查看次数: |
28328 次 |
最近记录: |