Play integration is a disaster - can't add even a single dependency

*** Please view post #2 of this thread, it seems IntelliJ and Play integration is broken because you can add event a single dependency without getting errors that prevent compilation ***


I want to use the REST Assured library - https://code.google.com/p/rest-assured/ - for testing REST components of a Play application.

I added the REST Assured dependency to Build.scala -

  val appDependencies = Seq(
    // Add your project dependencies here,
    javaCore,
    javaJdbc,
    javaEbean,
    "com.jayway.restassured" % "rest-assured" % "1.8.0" % "test"
  )


And added some import statement to my ApplicationTest.java file -

import static com.jayway.restassured.RestAssured.*;
import static com.jayway.restassured.matcher.RestAssuredMatchers.*;
import static org.hamcrest.Matchers.*;

I have errors in my ApplicationTest.java file for these three import statements even though I have added the dependency in Build.scala - "Cannot resolve symbol"

I cannot run my Play app or the tests and I get the following errors in the Messages - Make/Compile window -
Compilation completed with 14 errors and 0 warnings in 3 sec
14 errors
0 warnings
scala: warning: [options] bootstrap class path not set in conjunction with -source 1.6
scala: C:\Users\I013114\Development\my_workspace\my_application\test\ApplicationTest.java:21: error: package com.jayway.restassured does not exist
scala: import static com.jayway.restassured.RestAssured.*;
scala: C:\Users\I013114\Development\my_workspace\my_application\test\ApplicationTest.java:22: error: package com.jayway.restassured.matcher does not exist
scala: import static com.jayway.restassured.matcher.RestAssuredMatchers.*;
scala: C:\Users\I013114\Development\my_workspace\my_application\test\ApplicationTest.java:23: error: cannot find symbol
scala: import static org.hamcrest.Matchers.*;
scala:   symbol:   class Matchers
scala:   location: package org.hamcrest



The "run", "test" and "compile" commands work without any errors if I use my app from the command line, the problem only appears with IntelliJ. I am using IntelliJ 12.1.1 and Play 2.1.0. What could be causing this problem and how can I fix it?

1 comment

OK so it seems IntelliJ basically has terrible integration with Play. I can't even add the Google Guice DI library as a dependency, in other words I can't add any dependencies.

Steps to reproduce -
1. Create a new Play Java Project
2. Alter Build.scala file as follows -

  val appDependencies = Seq(
    // Add your project dependencies here,
    javaCore,
    javaJdbc,
    javaEbean,
    "com.google.inject" % "guice" % "3.0"
  )


3. Import Google Guice -
import com.google.inject.AbstractModule;

4. Create a default Play 2 App Run Configuration

5. Run the app

Errors:
I get an error on this import saying - Cannot resolve symbol 'inject'

So I try doing Build->Make Project, I get an error in the Messages windows - scala: C:\Users\Me\Development\myguice\app\controllers\Application.java:7: error: package com.google.inject does not exist

I then try editing the run configuration and removing the Before launch 'Make' command and replacing it with SBT, and selecting test:compile for the SBT Action. This just hangs IntelliJ with a background task "Executing SBT Action"

So is the true state of the IntelliJ - Play integration? Because it is completely broken if it is not possible to add a dependencies to the project. Is there some fix for this that I haven't come across in the last 8 eight hours I've spent trying to get IntelliJ and Play working together?

0

Please sign in to leave a comment.