在Travis-CI中测试Grails 2.5.3应用程序尝试使用Grails 2.4.4

时间:2016-02-23 06:31:49

标签: grails travis-ci

我有一个基于Grails 2.5.3(https://github.com/ppazos/cabolabs-ehrserver)的应用程序。

当我提交GitHub时,我试图整合Travis-CI来运行我的应用程序的测试。这是我的travis配置文件(我在经过几个小时的试验和错误后没有运气就结束了):https://github.com/ppazos/cabolabs-ehrserver/blob/master/.travis.yml

language: groovy

sudo: false

jdk:
  - oraclejdk7

env:
  - GRAILS_VERSION=2.5.3

before_install:
  - rm -rf ~/.gvm
  - curl -s get.sdkman.io | bash
  - source "$HOME/.sdkman/bin/sdkman-init.sh"
  - echo sdkman_auto_answer=true > ~/.sdkman/etc/config
  - source "/home/travis/.sdkman/bin/sdkman-init.sh"
  # dev null is to avoid the need for user input https://github.com/sdkman/sdkman-cli/issues/101
  - sdk install grails $GRAILS_VERSION < /dev/null
  - sdk use grails $GRAILS_VERSION
  - grails -version
  - sdk current grails

branches:
  only:
    - master

script: sdk use grails $GRAILS_VERSION &&
        grails upgrade --non-interactive &&
        grails clean &&
        grails test-app -integration

问题是即使sdkman报告使用Grails 2.5.3和grails版本也是如此,当应用程序执行时,我在Travis-CI UI上看到了这一点:

|Loading Grails 2.4.4
|Configuring classpath
|Running pre-compiled script

它还尝试安装旧版本的插件,而不是我在BuildConfig中的版本。

以下是Travis-CI构建的完整输出: https://travis-ci.org/ppazos/cabolabs-ehrserver

我是Travis-CI的新手,我似乎没有找到问题,非常欢迎任何帮助!

2 个答案:

答案 0 :(得分:0)

我以前使用SDKMAN(AKA GVM)在Travis上构建我的Grails项目,但使用Grails包装器是一种更可靠,更简单,更快速的解决方案。我使用Grails包装器构建的Here's my Grails 2.5.1 project - 注意Travis脚本比你的脚本简单得多,并且因为每次构建运行时我都不需要安装SDKMAN和Grails,所以它应该很多更快。

您需要做的就是提交wrapper目录,脚本grailswgrailsw.bat - 不要从我的项目中复制它们,使用为Grails 2.5.3项目(因为它们可能在Grails 2.5.1之后发生了变化)。

答案 1 :(得分:0)

主要问题是我在项目根目录中有一个旧的pom.xml文件,并且不知道Travis-CI正在使用它来构建项目。在我更新了pom(https://github.com/ppazos/cabolabs-ehrserver/commit/97d080bf9f7459732ca04faac10e6ae96d6ee3b3)后,它开始采用正确版本的Grails,v2.5.3,但又出现了另一个问题:

我的/ lib文件夹中有一个JAR没有被Maven加载,因此构建失败,因为缺少类。这是我自己开发的一个内部库,它只能被几个项目使用,所以它不会在任何Maven仓库上发布。

在网上看,无法找到任何可以让Maven考虑我的JAR的解决方案。