无法将Play应用程序部署到Heroku中

时间:2011-09-27 19:15:21

标签: deployment heroku playframework

我在向Heroku部署Play应用程序时遇到问题。在没有模块的情况下部署其他基本应用程序时我没有遇到任何问题,但是这个应用程序给出了以下错误:

@ubuntu:~/$ git push heroku master
Counting objects: 812, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (699/699), done.
Writing objects: 100% (794/794), 2.00 MiB, done.
Total 794 (delta 145), reused 0 (delta 0)

-----> Heroku receiving push
-----> Play! app detected
-----> Installing ivysettings.xml..... done
-----> Building Play! application...
       ~        _            _ 
       ~  _ __ | | __ _ _  _| |
       ~ | '_ \| |/ _' | || |_|
       ~ |  __/|_|\____|\__ (_)
       ~ |_|            |__/   
       ~
       ~ play! 1.2.3, http://www.playframework.org
       ~
       1.2.3
       Play! application root found at ./mods/playcopy/crud-1.2.3/
./mods/playcopy/greenscript-1.2.6h/samples-and-tests/use-gs-in-tags/
./mods/playcopy/greenscript-1.2.6h/samples-and-tests/demo/
./mods/playcopy/greenscript-1.2.6h/samples-and-tests/inline-dependency-declaring/
./mods/playcopy/greenscript-1.2.6h/samples-and-tests/jquery-ui/
./mods/playcopy/greenscript-1.2.6h/samples-and-tests/booking/
./mods/playcopy/greenscript-1.2.6h/samples-and-tests/less-and-coffee/
./mods/playcopy/greenscript-1.2.6h/samples-and-tests/chat/
./mods/playcopy/greenscript-1.2.6h/
./
       Resolving dependencies: .play/play dependencies ./mods/playcopy/crud-1.2.3/
./mods/playcopy/greenscript-1.2.6h/samples-and-tests/use-gs-in-tags/
./mods/playcopy/greenscript-1.2.6h/samples-and-tests/demo/
./mods/playcopy/greenscript-1.2.6h/samples-and-tests/inline-dependency-declaring/
./mods/playcopy/greenscript-1.2.6h/samples-and-tests/jquery-ui/
./mods/playcopy/greenscript-1.2.6h/samples-and-tests/booking/
./mods/playcopy/greenscript-1.2.6h/samples-and-tests/less-and-coffee/
./mods/playcopy/greenscript-1.2.6h/samples-and-tests/chat/
./mods/playcopy/greenscript-1.2.6h/
./ --forceCopy --silent -Duser.home=/tmp/build_1hn7e8ahaqrso 2>&1
       ~ Resolving dependencies using /tmp/build_1hn7e8ahaqrso/mods/playcopy/crud-1.2.3/conf/dependencies.yml,
       ~
       ~
       ~ No dependencies to install
           ~
       ~ Done!
       ~
       ~        _            _ 
       ~  _ __ | | __ _ _  _| |
       ~ | '_ \| |/ _' | || |_|
       ~ |  __/|_|\____|\__ (_)
       ~ |_|            |__/   
       ~
       ~ play! 1.2.3, http://www.playframework.org
       ~
/app/slug-compiler/lib/../language_packs/play/bin/compile: line 64: ./mods/playcopy/greenscript-1.2.6h/samples-and-tests/use-gs-in-tags/: is a directory
/app/slug-compiler/lib/../language_packs/play/bin/compile: line 65: ./mods/playcopy/greenscript-1.2.6h/samples-and-tests/demo/: is a directory
/app/slug-compiler/lib/../language_packs/play/bin/compile: line 66: ./mods/playcopy/greenscript-1.2.6h/samples-and-tests/inline-dependency-declaring/: is a directory
/app/slug-compiler/lib/../language_packs/play/bin/compile: line 67: ./mods/playcopy/greenscript-1.2.6h/samples-and-tests/jquery-ui/: is a directory
/app/slug-compiler/lib/../language_packs/play/bin/compile: line 68: ./mods/playcopy/greenscript-1.2.6h/samples-and-tests/booking/: is a directory
/app/slug-compiler/lib/../language_packs/play/bin/compile: line 69: ./mods/playcopy/greenscript-1.2.6h/samples-and-tests/less-and-coffee/: is a directory
/app/slug-compiler/lib/../language_packs/play/bin/compile: line 70: ./mods/playcopy/greenscript-1.2.6h/samples-and-tests/chat/: is a directory
/app/slug-compiler/lib/../language_packs/play/bin/compile: line 71: ./mods/playcopy/greenscript-1.2.6h/: is a directory
       /app/slug-compiler/lib/../language_packs/play/bin/compile: line 72: ./: is a directory
 !     Failed to build Play! application
 !     Cleared Play! framework from cache
/app/slug-compiler/lib/language_pack.rb:35:in `block in compile': failed to compile Play! app (Slug::CompileError)
    from /app/slug-compiler/lib/language_pack.rb:32:in `fork'
    from /app/slug-compiler/lib/language_pack.rb:32:in `compile'
    from /app/slug-compiler/lib/slug.rb:490:in `block in run_language_pack'
    from /app/slug-compiler/lib/utils.rb:117:in `log'
    from /app/slug-compiler/lib/slug.rb:727:in `log'
    from /app/slug-compiler/lib/slug.rb:489:in `run_language_pack'
    from /app/slug-compiler/lib/slug.rb:110:in `block (2 levels) in compile'
    from /app/slug-compiler/lib/utils.rb:98:in `block in timeout'
    from /usr/local/lib/ruby/1.9.1/timeout.rb:57:in `timeout'
    from /app/slug-compiler/lib/utils.rb:98:in `rescue in timeout'
    from /app/slug-compiler/lib/utils.rb:93:in `timeout'
    from /app/slug-compiler/lib/slug.rb:99:in `block in compile'
    from /app/slug-compiler/lib/utils.rb:117:in `log'
    from /app/slug-compiler/lib/slug.rb:727:in `log'
    from /app/slug-compiler/lib/slug.rb:98:in `compile'
    from /app/slug-compiler/bin/slugc:85:in `block in <main>'
    from /app/slug-compiler/lib/slug.rb:498:in `block in lock'
    from /app/slug-compiler/lib/repo_lock.rb:44:in `call'
    from /app/slug-compiler/lib/repo_lock.rb:44:in `run'
    from /app/slug-compiler/lib/slug.rb:498:in `lock'
    from /app/slug-compiler/bin/slugc:66:in `<main>'
-----> Discovering process types
       Procfile declares types -> web
-----> Compiled slug size is 36.4MB
-----> Launching... done, v6
       http://billeteo.herokuapp.com deployed to Heroku

To git@heroku.com:billeteo.git
   53b789c..24f66a4  master -> master

虽然我从项目的根目录开始运行,但Heroku认为我的根位于:

 Play! application root found at ./mods/playcopy/crud-1.2.3/

当然,它不包含代码,并且进程失败。

我的应用程序是带有以下dependencies.xml的标准Play应用程序:

# Application dependencies
# Notes:
#   play is an alias for play -> play $currentVersion
#   play -> crud is an alias for play -> crud $currentVersion
#   play -> secure is an alias for play -> secure $currentVersion
#   Modules from the main repository use 'play' as organisation

require:
    - play
    - playcopy -> crud 1.2.3
    - playcopy -> betterlogs 1.0
    - playcopy -> cobertura 2.1
    - playcopy -> mockito 0.1
    - playcopy -> greenscript 1.2.6h
    - custom -> useragentcheck 1.0
    - org.hibernate -> hibernate-search 3.4.0.Final

repositories:
     - localModules:
         type:       local
         artifact:   "${application.path}/mods/[organisation]/[module]-[revision]"
         contains:
           - playcopy
           - custom

我正在使用一些官方Play模块的本地存储库,因为它们可能有一些自定义代码(删除一些不必要的类,更改安全性,一些日志等)。

任何人都知道如何让Heroku找到正确的根?无法在Google上找到任何内容...

1 个答案:

答案 0 :(得分:4)

Heroku上的Play设置没有预料到您的特定设置。就像你指出的那样,你对应用程序的根目录的位置感到困惑。我认为我们可以推出一个解决方案来解决这个问题,但与此同时,你应该能够解决这个问题。试试这个:

压缩自定义模块并将dependencies.yml文件更改为

...
repositories:
 - localModules:
     type:       local
     artifact:   "${application.path}/mods/[organisation]/[module]-[revision].zip"
     contains:
       - playcopy
       - custom
...

在依赖项解析期间,Play应该解压缩您的自定义模块并将它们放在正确的位置。此外,Heroku不应该对应用程序根目录的位置感到困惑。