Mój projekt Scala (zarządzany przez Mavena) nie działa na Travisie, powodując błąd GC overhead limit exceeded
pomimo kompilacji dobrze lokalnie z tym samym MAVEN_OPTS=-Xmx3g -XX:MaxPermSize=512m
. Podejrzewam, że Travis jest jakoś ignorując moje MAVEN_OPTS
: Kiedy próbuję przetestować przeciwko Oracle JDK 8, Travis kłody:Travis CI ignorując MAVEN_OPTS?
$ Setting environment variables from .travis.yml
$ export MAVEN_OPTS="-XX:MaxPermSize=512m -Xmx3g"
który wygląda dobrze. Jednak wkrótce po jej kłody:
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=192m; support was removed in 8.0
co jest niepokojące, ponieważ nigdzie ja określając -XX:MaxPermSize=192m
tylko 512m
. (To prowadzi mnie do przekonania, że moja -Xmx3g
jest również ignorowana, co powoduje awarię kompilacji.)
Próbowałem określając MAVEN_OPTS
w wielu dodatkowych miejscach w moim pom, bezskutecznie. Na przykład, za-plugin maven-scala, mam:
<configuration>
...
<jvmArgs>
<jvmArg>-Xmx3g</jvmArg>
<jvmArg>-XX:MaxPermSize=512m</jvmArg>
</jvmArgs>
</configuration>
I mam również następujące pod wtyczki maven-surefire-plugin i scalatest, choć kompilacja zawodzi podczas kompilacji nie testy:
<configuration>
<argLine>-Xmx3g -XX:MaxPermSize=512m</argLine>
</configuration>
Poniżej całość mojego .travis.yml:
language: java
env:
global:
- MAVEN_OPTS="-XX:MaxPermSize=512m -Xmx3g"
script: mvn clean install
jdk:
- oraclejdk8
- oraclejdk7
Używam Scala 2.11.2 i scala-maven-plugin 3.2.0.
Prawdopodobnie chcesz przedinstalować, lub before_script, aby wykonać polecenie echo. Nie chcesz całkowicie zastąpić skryptu w ten sposób. –
@ CraigP.Motlin dzięki, myślę, że masz rację, zredagowałem swoją odpowiedź, aby użyć 'before_script' zamiast tylko skryptu. W moim przypadku tak naprawdę nie ma znaczenia, ponieważ i tak zastępuję skrypt, aby skompilować używając zarówno maven, jak i sbt. Czy mógłbyś wyjaśnić, dlaczego źle zastąpić skrypt? –
Zastępuje polecenie uruchamiające testy za pomocą polecenia echo. Tak więc kompilacja w zasadzie ustawia środowisko i wychodzi. Byłoby ok, gdyby polecenie było podobne do echa ... && mvn ... –