我有一个基于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的新手,我似乎没有找到问题,非常欢迎任何帮助!
答案 0 :(得分:0)
我以前使用SDKMAN(AKA GVM)在Travis上构建我的Grails项目,但使用Grails包装器是一种更可靠,更简单,更快速的解决方案。我使用Grails包装器构建的Here's my Grails 2.5.1 project - 注意Travis脚本比你的脚本简单得多,并且因为每次构建运行时我都不需要安装SDKMAN和Grails,所以它应该很多更快。
您需要做的就是提交wrapper
目录,脚本grailsw
和grailsw.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的解决方案。