2015-03-23 12 views
8

मेरा स्कैला प्रोजेक्ट (मेवेन-प्रबंधित) ट्रैविस पर निर्माण करने में असफल रहा है, त्रुटि को उसी MAVEN_OPTS=-Xmx3g -XX:MaxPermSize=512m के साथ स्थानीय रूप से ठीक से संकलित करने के बावजूद त्रुटि को फेंक रहा है। मुझे लगता है कि ट्रैविस किसी भी तरह मेरी MAVEN_OPTS अनदेखी कर रहा है: मैं Oracle JDK 8 के खिलाफ परीक्षण करने के लिए प्रयास करते हैं, ट्रैविस लॉग:ट्रैविस सीआई MAVEN_OPTS को अनदेखा कर रहा है?

$ Setting environment variables from .travis.yml 
$ export MAVEN_OPTS="-XX:MaxPermSize=512m -Xmx3g" 

जो अच्छा लगता है। हालांकि, के बाद जल्द ही यह लॉग:

Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=192m; support was removed in 8.0 

जो कहीं भी नहीं है मैं निर्दिष्ट करने हूँ -XX:MaxPermSize=192m, केवल 512m के बाद से परेशान है। (इससे मेरा मानना ​​है कि मेरे -Xmx3g को भी संकलन विफलता के कारण अनदेखा किया जा रहा है।)

मैंने अपने पोम में कई अतिरिक्त स्थानों में MAVEN_OPTS निर्दिष्ट करने का प्रयास किया, इसका कोई फायदा नहीं हुआ। उदाहरण के लिए, Maven-स्केला-प्लगइन के लिए, मेरे पास है:

<configuration> 
    ... 
    <jvmArgs> 
    <jvmArg>-Xmx3g</jvmArg> 
    <jvmArg>-XX:MaxPermSize=512m</jvmArg> 
    </jvmArgs> 
</configuration> 

और मैं भी, Maven-अचूक-प्लगइन और scalatest प्लगइन के अंतर्गत निम्नलिखित है, हालांकि निर्माण संकलन के दौरान नहीं परीक्षण विफल हो रहा है:

language: java 
env: 
    global: 
    - MAVEN_OPTS="-XX:MaxPermSize=512m -Xmx3g" 
script: mvn clean install 
jdk: 
    - oraclejdk8 
    - oraclejdk7 

मैं स्काला 2.11.2 उपयोग कर रहा हूँ और स्केला-Maven-प्लगइन 3.2.0:

<configuration> 
    <argLine>-Xmx3g -XX:MaxPermSize=512m</argLine> 
</configuration> 

निम्नलिखित मेरी .travis.yml की सम्पूर्णता है।

उत्तर

8

अद्यतन (11/2/15):

यह अंत में पूरी तरह से here हल किया गया था। का हवाला देते हुए:

आप उपयोग करना कंटेनर आधारित बनाता है (sudo पर निर्भर नहीं), आप गूंज कर सकते हैं कि आप क्या चाहते एक $HOME/.mavenrc फ़ाइल में चाहते हैं और उस /etc/mavenrc पर वरीयता दी जाएगी, ताकि जैसे: .travis.yml में

:

before_script: 
    - echo "MAVEN_OPTS='-Xmx2g -XX:MaxPermSize=512m'" > ~/.mavenrc 

(आप भी इस before_install में अपना सेटअप के आधार पर डाल सकता है)।

पुराना जवाब:

मैं अंत में जवाब here, जो ट्रैविस सीआई GitHub पर this (closed but not resolved) issue का संदर्भ पाया।

यह ट्रैविस की तरह लगता है फ़ाइल /etc/mavenrc है, जो तब किसी अन्य MAVEN_OPTS परिभाषाओं द्वारा ओवरराइड नहीं प्राप्त करता है (ट्रैविस config में जैसे के माध्यम से env/वैश्विक सेटिंग्स) के माध्यम से रूट के रूप में एक MAVEN_OPTS वातावरण चर निर्यात करता है। कस्टम MAVEN_OPTS सेट करने से पहले /etc/mavenrc को हटाना है।,

script: 
    - sudo rm /etc/mavenrc 
    - export MAVEN_OPTS="-Xmx2469m -XX:MaxPermSize=512m" 
    - mvn clean install 

नोट है कि मैं अपने ट्रैविस config में language: java उपयोग नहीं कर रहा बस सीधे Maven बुला script निर्देश के माध्यम से:

मैं सफलतापूर्वक उपयोग करते हुए मेरे .travis.yml में निम्न कस्टम MAVEN_OPTS सेट और निर्माण करने में सक्षम था।

+1

आप शायद echo कमांड निष्पादित करने के लिए पहले से इंस्टॉल करें, या पहले_स्क्रिप्ट चाहते हैं। आप इस तरह स्क्रिप्ट को पूरी तरह से बदलना नहीं चाहते हैं। –

+0

@ क्रेग.मोटलिन धन्यवाद, मुझे लगता है कि आप सही हैं, मैंने सिर्फ अपना स्क्रिप्ट के बजाय 'first_script' का उपयोग करने के लिए अपना जवाब संपादित किया। मेरे मामले में यह वास्तव में कोई फर्क नहीं पड़ता क्योंकि मैं मैवेन और एसबीटी दोनों का उपयोग करके संकलित करने के लिए वैसे भी स्क्रिप्ट बदल रहा हूं। क्या आप विस्तृत कर सकते हैं कि स्क्रिप्ट को पूरी तरह से बदलने में बुरा क्यों है? –

+1

यह उस आदेश को प्रतिस्थापित करता है जो इको कमांड के साथ परीक्षण चलाता है। तो निर्माण मूल रूप से पर्यावरण सेट करता है और बाहर निकलता है। यह ठीक होगा अगर आदेश इको की तरह कुछ था ... && mvn ... –

3

export MAVEN_SKIP_RC=true किसी ऐसे सिस्टम से निपटने का अनुशंसित तरीका है जिसमें एक/etc/mavenrc है। यह इसे डिफ़ॉल्ट को अनदेखा कर देगा और MAVEN_OPTS चर को पढ़ेगा।

0

आखिरकार मेरे लिए काम किया गया।

language: java 
sudo: false 
jdk: 
    - oraclejdk8 
install: MAVEN_SKIP_RC=true MAVEN_OPTS="-Xss4M" mvn install -DskipTests=true 
script: MAVEN_SKIP_RC=true MAVEN_OPTS="-Xss4M" mvn 

MAVEN_SKIP_RC की जरूरत है के रूप में @adam कहते हैं और MAVEN_OPTS क्या मैं ढेर से मुक्ति को रोकने के लिए javac प्राप्त करने के लिए आवश्यक हैं।

संबंधित मुद्दे