Travis CI ignoriert MAVEN_OPTS?

8

Mein Scala-Projekt (von Maven verwaltet) kann nicht auf Travis aufbauen und hat einen GC overhead limit exceeded -Fehler, obwohl es lokal mit demselben MAVEN_OPTS=-Xmx3g -XX:MaxPermSize=512m kompiliert wurde. Ich vermute, dass Travis irgendwie meine MAVEN_OPTS ignoriert: Wenn ich versuche, gegen Oracle JDK 8 zu testen, meldet Travis:

%Vor%

was gut aussieht. Jedoch bald nachdem es sich meldet:

%Vor%

was beunruhigend ist, da ich NOFORTHERE -XX:MaxPermSize=192m , nur 512m festlege. (Dies lässt mich glauben, dass mein -Xmx3g ebenfalls ignoriert wird, was den Kompilierungsfehler verursacht.)

Ich habe versucht, die MAVEN_OPTS an vielen zusätzlichen Stellen in meinem Pom anzugeben, ohne Erfolg. Zum Beispiel habe ich für das maven-scala-plugin:

%Vor%

Und ich habe auch die folgenden unter dem maven-surefire-plugin und scalatest plugin, obwohl der Build während der Kompilierung nicht Tests:

%Vor%

Das Folgende ist die Gesamtheit meiner .travis.yml:

%Vor%

Ich benutze Scala 2.11.2 und scala-maven-plugin 3.2.0.

    
Emma Strubell 23.03.2015, 00:23
quelle

3 Antworten

8

UPDATE (11/2/15):

Dies wurde schließlich hier vollständig gelöst. Zitat:

Wenn Sie containerbasierte Builds verwenden möchten (ohne auf sudo angewiesen zu sein), können Sie das, was Sie wollen, in einer $HOME/.mavenrc -Datei widergeben, die Vorrang vor /etc/mavenrc hat, etwa so:

in .travis.yml :

%Vor%

(Sie könnten dies auch in before_install eingeben, abhängig von Ihrer Einstellung).

Alte Antwort:

Ich fand endlich die Antwort hier , welche Referenzen dieses (abgeschlossene aber nicht behobene) Problem auf dem Travis CI github.

Es scheint, als ob Travis eine MAVEN_OPTS -Umgebungsvariable als root über die Datei /etc/mavenrc exportiert, die dann nicht von anderen MAVEN_OPTS -Definitionen überschrieben wird (z. B. über env / global-Einstellungen in der travis-Konfiguration). Die Problemumgehung besteht darin, /etc/mavenrc vor dem Festlegen von benutzerdefiniertem% ​​co_de% zu löschen.

Ich konnte die benutzerdefinierte MAVEN_OPTS setzen und erfolgreich erstellen, indem ich Folgendes in meinem MAVEN_OPTS :

verwende %Vor%

Beachten Sie, dass ich .travis.yml nicht in meiner Travis-Konfiguration verwende, sondern Maven direkt über die language: java -Direktive aufruft.

    
Emma Strubell 01.04.2015, 17:53
quelle
3

export MAVEN_SKIP_RC=true ist die empfohlene Vorgehensweise, wenn Sie mit einem System arbeiten, das über eine / etc / mavenrc verfügt. Dadurch werden die Standardwerte ignoriert und die Variable MAVEN_OPTS gelesen.

    
adam 02.03.2016 18:54
quelle
0

Das hat endlich für mich funktioniert.

%Vor%

Das MAVEN_SKIP_RC wird benötigt, wie @adam sagt, und das MAVEN_OPTS ist das, was ich brauchte, um javac dazu zu bringen, den Stapel nicht mehr auszublasen.

    
Mike Samuel 01.10.2016 05:24
quelle