2012-08-28 20 views
14

मुझे ग्रहण और मेवेन के लिए पर्यावरण चर सेट करने में कुछ समस्याएं आई हैं।ओएसएक्स माउंटेन शेर पर किसी एप्लिकेशन में पर्यावरण चर सेट करने के लिए कैसे? ओएसएक्स माउंटेन शेर के अपग्रेड के बाद

मेरा लक्ष्य एक्लिप्स में एक मेवेन कमांड चलाने के लिए है। इस कमांड को रिमोट रिपोजिटरी से कलाकृतियों (संकल्प को हल करने) को डाउनलोड करने की आवश्यकता है। भंडार HTTPS के माध्यम से प्रमाणीकृत है।

मैंने Guide to Remote repository access through authenticated HTTPS का पालन किया है और नीचे दिए गए लाइनों को मेरे .bash_profil में जोड़ा है। यदि मैं टर्मिनल में मैवेन चला रहा हूं तो हर चीज ठीक काम करती है।

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

लेकिन यह केवल टर्मिनल के लिए काम करता है, न कि अनुप्रयोगों के लिए। (यह भी Set environment variables on Mac OS X Lion देखें) पिछले OSX-संस्करण पर आप

~/.MacOSX/environment.plist 

को MAVEN_OPTS चर जोड़ने के लिए किया था यह OSX शेर के लिए पूरी तरह से काम किया।

लेकिन ऐप्पल ने माउंटेन शेर पर इस व्यवहार को बदल दिया है। मैंने पर्यावरण पढ़ा है। प्लिस्ट अब समर्थित नहीं है और नया तरीका है .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 को बदल दिया है। लेकिन यह काम नहीं किया। मैं ग्रहण के भीतर मेवेन शुरू करता हूँ। लेकिन मैवेन कलाकृतियों को डाउनलोड करने में सक्षम नहीं है, क्योंकि रिमोट रिपोजिटरी विश्वसनीय नहीं है। मुझे लगता है कि ग्रहण पर्यावरण के चर का उपयोग नहीं करता है जिसे मैंने Info.plist

में परिभाषित किया है क्या आपके पास इस समस्या को हल करने के लिए कोई सुझाव है?

आपके उत्तरों के लिए धन्यवाद!

उत्तर

1

यहाँ से: 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 पर चरणों का उपयोग करें, एक अनुप्रयोग जो गोदी पर रखा जा सकता है में ऊपर स्क्रिप्ट चालू करने के लिए।

+0

तेज उत्तर के लिए धन्यवाद! – Loki

+0

दुर्भाग्यवश यह मेरी समस्या का समाधान नहीं किया। जब मैं स्क्रिप्ट के साथ ग्रहण शुरू करता हूं, तब भी यह 'MAVEN_OPTS' का उपयोग नहीं करता है। लेकिन अगर मैं उदाहरण के लिए एक अलग 'एम 2_एचओएमई' निर्यात करता हूं, तो ग्रहण इस नए मेवेन-होम का उपयोग करता है। – Loki

1

आप Maven "डीबग विन्यास" के अंतर्गत ग्रहण में सीधे env चर सेट कर सकते हैं -> "पर्यावरण" टैब

19

दुर्भाग्य से, इस ओएस एक्स 10.8.x माउंटेन में एक वैश्विक वातावरण चर स्थापित करने के लिए सबसे अच्छा विकल्प हो रहा है शेर:

अस्थायी वातावरण चर के लिए, Terminal.app में इस आदेश को चलाने के लिए, और है कि चर का उपयोग करने की जरूरत है किसी भी ऐप्स को पुनः आरंभ:

launchctl setenv MYVARIABLE value 

एक वातावरण चर रिबूट भर में लगातार बनाने, /etc/launchd.conf बनाते हैं और अपने पूरे सिस्टम हर चर के लिए इस तरह एक पंक्ति जोड़ें, तो रिबूट करने के लिए:

setenv MYVARIABLE value 

यह एक वैश्विक वातावरण स्थापित करने के लिए मेरे लिए काम किया वेरिएबल जिसे ओएस एक्स 10.8.2 पर इंटेलिजे आईडीईए सीई 12.0 द्वारा विरासत में प्राप्त किया जा सकता है। बहुत सुरुचिपूर्ण नहीं है, लेकिन यह काम करता है।

वैकल्पिक रूप से, आप टर्मिनल.एप में पर्यावरण चर सेट कर सकते हैं, फिर उस ऐप को लॉन्च करें जिससे आप कमांड लाइन से पर्यावरण चर का उपयोग करना चाहते हैं। लॉन्च ऐप आपके टर्मिनल सत्र से पर्यावरण का वारिस करेगा। Terminal.app में, वातावरण चर सेट और open -a "App Name" जैसी कमांड के साथ एक और एप्लिकेशन लॉन्च:

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

यह खोलता है IntelliJ विचार, और मेरे कोड अपने वातावरण में $MYVARIABLE पहुँच सकते हैं।