gpt4 book ai didi

java - 如何为 OSX Mountain Lion 上的应用程序设置环境变量?

转载 作者:太空狗 更新时间:2023-10-29 22:52:07 30 4
gpt4 key购买 nike

自从升级到 OSX Mountain Lion 后,我在为 eclipse 和 maven 设置环境变量时遇到了一些问题。

我的目标是在 Eclipse 中运行 maven 命令。此命令需要从远程存储库下载 Artifact (解决依赖关系)。存储库通过 HTTPS 进行身份验证。

我关注了 Guide to Remote repository access through authenticated 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

(另请参阅 Set environment variables on Mac OS X Lion)这对 OSX Lion 非常有效。

但是 Apple 在 Mountain Lion 上改变了这种行为。我读过 environment.plist 不再受支持,新方法是编辑 .app 本身的 Info.plist ( Where are system environment variables set in 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 无法下载 Artifact ,因为远程存储库不受信任。我认为 Eclipse 没有使用我在 Info.plist 中定义的环境变量

你对如何解决这个问题有什么建议吗?

感谢您的回答!

最佳答案

不幸的是,这似乎是在 OS X 10.8.x Mountain Lion 中设置全局环境变量的最佳选择:

对于临时环境变量,在 Terminal.app 中运行此命令,并重新启动任何需要访问该变量的应用程序:

launchctl setenv MYVARIABLE value

要使环境变量在重新启动后保持不变,请创建 /etc/launchd.conf 并为每个变量添加如下一行,然后重新启动整个系统:

setenv MYVARIABLE value

这对我来说很有用,可以设置一个全局环境变量,该变量可以由 OS X 10.8.2 上的 IntelliJ IDEA CE 12.0 继承。不是很优雅,但它确实有效。

或者,您可以在 Terminal.app 中设置环境变量,然后启动您想要从命令行访问环境变量的应用程序。启动的应用程序将从您的终端 session 继承环境。在 Terminal.app 中,设置环境变量并使用类似 open -a "App Name" 的命令启动另一个应用程序:

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

这将打开 IntelliJ IDEA,我的代码可以在其环境中访问 $MYVARIABLE

关于java - 如何为 OSX Mountain Lion 上的应用程序设置环境变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12165385/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com