Play Framework (Scala) in Intellij CE

Anyone using this combination? I’ve developed several Akka HTTP services using Eclipse and Maven, but thought I would give Play, sbt, IntelliJ and Silhouette a try for an API Gateway with OAuth 2. Not yet fun.

I created a project using the “Play Scala Compile Time Dependency Injection Example (2.5.x)” Lightbend starter.
I’ve already learned that the “Run Play 2 App” menu is not available in CE, but I can run the app by running sbt.
Got the dependencies figured out, but when I add some Silhouette code without imports, I don’t get any error highlighting.

I think maybe I need to modify project structure? It ended up with three modules: root, root-build and

Thanks for any tips.

I use CE even though I have a license. I feel like it’s a lighter-weight solution. I always run via sbt, so maybe that’s why it’s not a problem for me. Running tests works great in CE, which is a must have. Starting and stopping the app… it’s fine using the internal sbt interface or in a shell outside of the IDE.

Do you have error highlighting in the editor?

Yes. Live error highlighting. Sometimes, very rarely, when using advanced features of the type system, IntelliJ will complain when it’s perfectly valid.

Make sure you install the Scala plugin. It recognizes sbt projects out of the box.

As far as I know only Twirl Templates and the Router does not have that much love inside IntelliJ CE. (There is no Syntax Highlighting for Twirl and the Router is just a Text File in CE, whereas in the paid version you can actually click onto the controllers)

But currently I barly use Twirl or the Generated Play Router.
Mostly SIRD + Client Side Application. So it heavily depends on what you are doing, but most often IntelliJ CE is just fine.

Thanks. I suspect my Project Structure settings are incorrect, but I don’t know if there’s an easy way to share what they are.

If you start with a giter8 sbt template, you’re going to be fine. @schmitch is correct, there is no highlighting for routes, but I don’t see that much value there. I still get compile-time checking for them. And I guess because I don’t use server-side templates (I typically write Vue.js SPA’s), it’s less of an issue for me.