1

I am trying to create the ensime configuration file on a Lagom 1.4.4 project, using the ensime-sbt plugin. However, when running the ensimeConfig command on the root of my project, I get this error:

> ensimeConfig [info] ENSIME update.
[info] Resolving com.lightbend.lagom#lagom-reloadable-server_2.12;1.4.4 ... 
[info] ENSIME processing lagom-internal-meta-project-service-locator (lagom-internal-meta-project-service-locator)
[error] Missing setting: ensimeScalacTransformer
[trace] Stack trace suppressed: run last my-project/*:ensimeConfig for the full output.
[error] (my-project/*:ensimeConfig) java.lang.IllegalArgumentException 
[error] Total time: 56 s, completed Jun 12, 2018 7:37:12 PM

It seems that the project lagom-internal-meta-project-service-locator is created dynamically by the Lagom plugin on build, as it is located under target/lagom-dynamic-projects. Also, it does not seem to be required for coding. So I thing the best way is to ignore all the projects under the folder target/lagom-dynamic-projects.

How can I ignore all the projects under a folder when running ensimeConfig?

Guillermo Gutiérrez
  • 17,273
  • 17
  • 89
  • 116

2 Answers2

0

Lagom and ensime doesn't go well but you can try adding this to your sbt file:

lazy val serviceLocatorProject = ProjectRef(uri("."), "lagom-internal-meta-project-service-locator")
ensimeUnmanagedSourceArchives in serviceLocatorProject := Nil
ensimeUnmanagedJavadocArchives in serviceLocatorProject := Nil

you may need to do this for any other internal connector etc. like lagom-internal-meta-project-cassandra, lagom-internal-meta-project-kafka etc.

Hüseyin Zengin
  • 1,216
  • 11
  • 23
0

The solution suggested by Hüseyin was a starting point but did not fix the problem fully. I managed to get ensime to work with Lagom by adding this to my build.sbt (or $HOME/.sbt/1.0/global.sbt if you do not want to have it in your project directly).

import org.ensime.EnsimeKeys._
import org.ensime.EnsimePlugin

ensimeIgnoreMissingDirectories := true

ensimeIgnoreScalaMismatch in ThisBuild := true
ensimeScalaVersion in ThisBuild := "2.12.6"

lazy val serviceLocatorProject = ProjectRef(uri("."), "lagom-internal-meta-   project-service-locator")
ensimeUnmanagedSourceArchives in serviceLocatorProject := Nil
ensimeUnmanagedJavadocArchives in serviceLocatorProject := Nil
ensimeScalacTransformer in serviceLocatorProject := identity
ensimeScalacOptions in serviceLocatorProject := EnsimePlugin.ensimeSuggestedScalacOptions(scalaVersion.value)
ensimeJavacOptions in serviceLocatorProject := Nil

lazy val cassandraProject = ProjectRef(uri("."), "lagom-internal-meta-project-cassandra")
ensimeUnmanagedSourceArchives in cassandraProject := Nil
ensimeUnmanagedJavadocArchives in cassandraProject := Nil
ensimeScalacTransformer in cassandraProject := identity
ensimeScalacOptions in cassandraProject := EnsimePlugin.ensimeSuggestedScalacOptions(scalaVersion.value)
ensimeJavacOptions in cassandraProject := Nil

lazy val kafkaProject = ProjectRef(uri("."), "lagom-internal-meta-project-kafka")
ensimeUnmanagedSourceArchives in kafkaProject := Nil
ensimeUnmanagedJavadocArchives in kafkaProject := Nil
ensimeScalacTransformer in kafkaProject := identity
ensimeScalacOptions in kafkaProject := EnsimePlugin.ensimeSuggestedScalacOptions(scalaVersion.value)
ensimeJavacOptions in kafkaProject := Nil
Antoine Sauray
  • 241
  • 1
  • 3
  • 15