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

标签 deployment heroku playframework

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

@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 找到正确的根?在谷歌上找不到任何东西...

最佳答案

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

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

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

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

关于deployment - 无法将 Play 应用程序部署到 Heroku,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7574491/

相关文章:

scala - 如何依赖 GitHub 中的 PlayProject?

java - 设置 Ruby/Java 构建/部署的最佳方式?

c# - "Security"部署的 Web 应用程序上的 NHibernate 问题

node.js - 如何在 Heroku 上运行二进制文件

java - 直接在模型上检查验证

scala - Play Framework 2.3 中的域路由

sql - 架构更改脚本 : Validation and test cases

java - 如何在 Swing 桌面应用程序中部署 JavaFX

ruby-on-rails - 不是预编译在heroku .css上的rails 3.1错误

ruby-on-rails - 设计 token 身份验证错误