Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I reference play framework third party modules without referencing an absolute path?

Here is my situation. I have a play app which uses the guice module. In order to work with the guice module:

  • I installed it using play install guice. This installs it in the $PLAY_HOME/modules which is fine by me. I don't want to edit the module files in any way whatsoever.
  • Then I declared the module in my dependencies.yml like so: - play -> guice 1.2
  • Within my app, I ran play dependencies, and this resoles the module just fine and creates a modules/guice-1.2 file that references the guice module.

The issue is that the content of that file is something like the following: /some-absolute-path/play-1.2.x/modules/guice-1.2.

That works fine when working locally for development. But when I want to move to a production server, with a different install of Play! (i.e. with a different absolute path to it) it will obviously fail.

So what's the best way to deal with this?

For now I've resorted to declaring the module in the application.conf file like this: module.guice=${play.path}/modules/guice-1.2. Unfortunately the ${play.path} magic doesn't seem to work on those generated files.

By the way I use version 1.2.3 of Play!

like image 490
SaM Avatar asked Nov 04 '22 15:11

SaM


1 Answers

you should try with ${application.path} in your dependencies.yml file, like in this example

require:
    - play -> crud
    - provided -> DateHelper 1.0 
repositories: 
    - provided: 
        type:       local 
        artifact:   "${application.path}/jar/[module]-[revision].jar" 
        contains: 
            - provided -> * 

see this question: How can I specify a local jar file as a dependency in Play! Framework 1.x

like image 80
opensas Avatar answered Nov 09 '22 10:11

opensas