Il mio progetto Scala (gestito da Maven) non riesce a costruire su Travis, lanciando un errore GC overhead limit exceeded
malgrado la compilazione della multa a livello locale con lo stesso MAVEN_OPTS=-Xmx3g -XX:MaxPermSize=512m
. Ho il sospetto che Travis è in qualche modo ignorando la mia MAVEN_OPTS
: Quando provo a testare contro Oracle JDK 8, Travis registra:Travis CI ignora MAVEN_OPTS?
$ Setting environment variables from .travis.yml
$ export MAVEN_OPTS="-XX:MaxPermSize=512m -Xmx3g"
che sembra buono. Tuttavia, subito dopo si registra:
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=192m; support was removed in 8.0
che è preoccupante poiché in nessun luogo sto specificando -XX:MaxPermSize=192m
, solo 512m
. (Questo mi porta a credere che anche il mio -Xmx3g
venga ignorato, causando l'errore di compilazione.)
Ho provato a specificare il MAVEN_OPTS
in molti altri posti nel mio pom, senza risultato. Ad esempio, per l'esperto-Scala-plugin, ho:
<configuration>
...
<jvmArgs>
<jvmArg>-Xmx3g</jvmArg>
<jvmArg>-XX:MaxPermSize=512m</jvmArg>
</jvmArgs>
</configuration>
e ho anche il seguente sotto la maven-surefire-plugin e ScalaTest plug-in, anche se la build sta venendo a mancare durante la compilazione non test:
<configuration>
<argLine>-Xmx3g -XX:MaxPermSize=512m</argLine>
</configuration>
che segue è la totalità della mia .travis.yml:
language: java
env:
global:
- MAVEN_OPTS="-XX:MaxPermSize=512m -Xmx3g"
script: mvn clean install
jdk:
- oraclejdk8
- oraclejdk7
sto usando Scala 2.11.2 e scala-maven-plugin 3.2.0.
Probabilmente si desidera before_install, o before_script, per eseguire il comando echo. Non vorresti sostituire completamente lo script in questo modo. –
@ CraigP.Motlin grazie, penso che tu abbia ragione, ho modificato la mia risposta per usare 'before_script' piuttosto che solo script. Nel mio caso non ha molta importanza dal momento che sto sostituendo comunque lo script per compilare usando sia Maven che SBT. Potresti approfondire perché è sbagliato sostituire completamente lo script? –
Sostituisce il comando che esegue i test con il comando echo. Quindi la build imposta fondamentalmente l'ambiente e le uscite. Sarebbe ok se il comando fosse qualcosa come echo ... && mvn ... –