scala - Travis CI 忽略 MAVEN_OPTS?

标签 scala maven travis-ci scala-maven-plugin

我的 Scala 项目(Maven 管理的)无法在 Travis 上构建,抛出 GC overhead limit exceeded尽管使用相同的 MAVEN_OPTS=-Xmx3g -XX:MaxPermSize=512m 在本地编译良好,但仍出错.我怀疑 Travis 以某种方式忽略了我的 MAVEN_OPTS :当我尝试针对 Oracle JDK 8 进行测试时,Travis 记录:

$ 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在我的 pom 中的许多其他地方,都无济于事。例如,对于 maven-scala-plugin,我有:
<configuration>
  ...
  <jvmArgs>
    <jvmArg>-Xmx3g</jvmArg>
    <jvmArg>-XX:MaxPermSize=512m</jvmArg>
  </jvmArgs>
</configuration>

而且我在 maven-surefire-plugin 和 scalatest 插件下还有以下内容,尽管构建在编译期间失败,而不是测试:
<configuration>
  <argLine>-Xmx3g -XX:MaxPermSize=512m</argLine>
</configuration>

以下是我的 .travis.yml 的全部内容:
language: java
env:
  global:
    - MAVEN_OPTS="-XX:MaxPermSize=512m -Xmx3g"
script: mvn clean install
jdk:
    - oraclejdk8
    - oraclejdk7

我正在使用 Scala 2.11.2 和 scala-maven-plugin 3.2.0。

最佳答案

更新 (11/2/15):

终于彻底解决了here .引用:

如果您想使用基于容器的构建(不依赖于 sudo),您可以将您想要的内容回显到 $HOME/.mavenrc文件,这将优先于 /etc/mavenrc ,像这样:

.travis.yml :

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

(你也可以把它放在 before_install 中,这取决于你的设置)。

旧答案:

我终于找到了答案here ,其中引用了 this (closed but not resolved) issue在 Travis CI github 上。

似乎 Travis 导出了一个 MAVEN_OPTS环境变量作为 root 通过文件 /etc/mavenrc ,然后不会被任何其他 MAVEN_OPTS 覆盖定义(例如,通过 travis 配置中的 env/global 设置)。解决方法是删除 /etc/mavenrc设置自定义前 MAVEN_OPTS .

我能够设置自定义 MAVEN_OPTS并在我的 .travis.yml 中使用以下内容成功构建:
script:
  - sudo rm /etc/mavenrc
  - export MAVEN_OPTS="-Xmx2469m -XX:MaxPermSize=512m"
  - mvn clean install

请注意,我没有使用 language: java在我的 travis 配置中,直接通过 script 调用 maven指示。

关于scala - Travis CI 忽略 MAVEN_OPTS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29201549/

相关文章:

java - Maven:从一个较大项目的包中创建一个 jar

ruby - Travis-ci 构建失败,rake 中止!加载错误 : cannot load such file -- rspec/core/rake_task

scala - 一元约束到可变参数的 HList

scala - 在 Akka/Spray 上限制 HTTP 请求

java - 如何使用 BouncyCaSTLe 生成没有密码的 OpenPGP KeyPair?

R找不到travis安装的包

travis-ci - 您可以在 travis 脚本中安装/使用 Travis Cli 吗?

java - 在 Windows 上使用 Java -D 选项运行 SBT 1.2.8 项目

java - 无法使用 Maven 构建 Spring 4 项目

java - 无法执行目标 org.codehaus.mojo :exec-maven-plugin:1. 4.0:exec