/ / Come importare un progetto multi-modulo in IntelliJ IDEA? - intellij-idea, playframework-2.0, sbt

Come importare un progetto multi-modulo in IntelliJ IDEA? - intellij-idea, playframework-2.0, sbt

Sono abituato ai progetti Spring e Maven dove ho creato un progetto multi-modulo in Maven con progetti come:

app-web
app-models
app-services
app-common

Sto iniziando a usare Gioca a Framework 2 (Scala) e sbt.

C'è un concetto simile con Play e sbt che potrei raggruppare tutti questi progetti in un'unica soluzione IDEA IntelliJ e sbt?

risposte:

8 per risposta № 1

IntelliJ IDEA 13 (l'ultima versione è 13.1.3) Viene con il supporto SBT integrato, e l'edizione Ultimate aggiunge il supporto Play.

Un progetto sbt multi-modulo può essere importato in IDEA ed è completamente supportato fuori dalla scatola, ma è basato su Play o no (dopotutto sono progetti di sbt).

Dovresti provare tu stesso con il seguente file di costruzione molto semplicistico build.sbt (o semplicemente generare un progetto Play con play new o meglio ora activator new [your-project-name] play-scala):

lazy val a, b, c = project

e il seguente project/build.properties:

sbt.version=0.13.5

Nient'altro che questi due file sopra sono necessari per iniziare con sbt / activator.

In IDEA, apri il progetto usando File > Open... e selezionare build.sbt.

inserisci la descrizione dell'immagine qui

Clic OK per vedere un'altra finestra in cui si specificano opzioni di configurazione aggiuntive per il progetto. Quindi i moduli si presentano.

inserisci la descrizione dell'immagine qui


1 per risposta № 2

Probabilmente non saresti in grado di raggrupparli in un singolo progetto nell'idea ma potresti avere sicuramente più progetti:

nel tuo progetto / Build.scala:

{

val baseDependencies = Seq(
"org1" % "dep" % "latest.integration",
"org2" % "dep2" % "version"
)

val modelDependencies = baseDependencies ++ Seq("org3" % "dep3" % "version")

val appWeb = play.Project("app-web", "1.0", baseDependencies)

val appModels = play.Project("app-models", "1.0", modelDependencies, path = file("modules/models"))

val app = play.Project("app", "1.0", Nil).aggregate(appWeb, appModels)
}

In questo caso, avrai una normale app chiamata"app-web", un modulo appModels sotto moduli / modelli senza la directory del progetto e confs normali come application.conf e un'app aggregata chiamata "app".

Quando avvii la console di gioco puoi passarea determinati progetti digitando "project (name)". Ad esempio è possibile digitare "project app-web" e quindi "idea" per generare la soluzione del progetto web-app per l'idea. È anche possibile passare alla "app" di progetto in cui tutti i comandi immessi sotto verranno applicati a tutti i sottoprogetti.

Per ulteriori informazioni, consultare la documentazione qui: http://www.playframework.com/documentation/2.2.x/SBTSubProjects