2013-11-22 9 views
9

build.sbt कन्वर्ट करने के लिए मैं एक काम कर बहु ​​मॉड्यूल 2.2 आवेदन जो इस तरह आयोजित किया जाता है ...प्ले उप-परियोजनाओं: कैसे

myApp 
    + app 
    + conf 
    + project 
     + build.properties 
     + Build.scala 
     + plugin.sbt 

... जहां Build.scala निम्नलिखित बयानों शामिल प्ले किया है :

गु:

import sbt._ 
import Keys._ 
import play.Project._ 

object ApplicationBuild extends Build { 

    val appName   = "myApp" 
    val appVersion  = "1.0-SNAPSHOT" 

    val authDependencies = Seq(
    "se.radley" %% "play-plugins-salat" % "1.3.0" 
) 

    val mainDependencies = Seq(
    "se.radley" %% "play-plugins-salat" % "1.3.0" 
) 

    lazy val auth = play.Project(
    appName + "-auth", 
    appVersion, 
    authDependencies, 
    path = file("modules/auth")).settings(
     lessEntryPoints <<= baseDirectory(customLessEntryPoints), 
     routesImport += "se.radley.plugin.salat.Binders._", 
     templatesImport += "org.bson.types.ObjectId", 
     testOptions in Test := Nil, 
     resolvers ++= Seq(Resolvers.sonatype, Resolvers.scalaSbt) 
    ) 

    lazy val main = play.Project(
    appName, 
    appVersion, 
    mainDependencies).settings(
     scalacOptions += "-language:reflectiveCalls", 
     routesImport += "se.radley.plugin.salat.Binders._", 
     templatesImport += "org.bson.types.ObjectId", 
     testOptions in Test := Nil, 
     lessEntryPoints <<= baseDirectory(customLessEntryPoints), 
     resolvers ++= Seq(Resolvers.sonatype, Resolvers.scalaSbt) 
    ).dependsOn(auth).aggregate(auth) 

    def customLessEntryPoints(base: File): PathFinder = { 
    (base/"app"/"assets"/"stylesheets"/"bootstrap" * "bootstrap.less") +++ 
    (base/"app"/"assets"/"stylesheets" * "*.less") 
    } 
} 

object Resolvers { 

    val scalaSbt = Resolver.url("Scala Sbt", url("http://repo.scala-sbt.org/scalasbt/sbt-plugin-snapshots"))(Resolver.ivyStylePatterns) 
    val sonatype = Resolver.sonatypeRepo("snapshots") 
} 

अब Play 2.2 documentation ऐसा लगता है कि मैं build.sbt को अपने प्रोजेक्ट में कनवर्ट करना चाहिए पढ़ने ई निम्नलिखित उदाहरण एक play घोषित करने के लिए build.scala फ़ाइल का उपयोग करता है। प्रोजेक्ट। यह दृष्टिकोण संस्करण 2.2 से पहले प्ले अनुप्रयोगों को परिभाषित किया गया था। पिछड़ा संगतता का समर्थन करने के लिए दृष्टिकोण बनाए रखा गया है। हम अनुशंसा करते हैं कि आप build.sbt आधारित दृष्टिकोण में कनवर्ट करें या build.scala का उपयोग करते समय, आप एसबीटी के प्रोजेक्ट प्रकार और प्रोजेक्ट मैक्रो का उपयोग करते हैं।

वहाँ किसी भी काम कर रहे उदाहरण बताता है कि कैसे build.sbt साथ project/build.scala को बदलने के लिए है? मैंने यहां कुछ और छोटे लेख पढ़े ... लेकिन मैं एक काम करने वाली प्ले परियोजना पाने में असमर्थ था।

उत्तर

9

build.sbt को अपने निर्माण कन्वर्ट करने के लिए कोई तत्काल आवश्यकता है। build.sbt सरल है, लेकिन मूल रूप से बस Build.scala में संकलित हो जाता है।

इस प्रश्न का अन्य उत्तर काम करेगा, लेकिन शायद थोड़ा सा वर्बोज़ है। अब

lazy val auth = project.in(file("modules/auth")) 

lazy val main = project.in(file(".")).dependsOn(auth).aggregate(auth) 

playScalaSettings 

name := "myApp" 

version := "1.0-SNAPSHOT" 

libraryDependencies += "se.radley" %% "play-plugins-salat" % "1.3.0" 

scalacOptions += "-language:reflectiveCalls" 

routesImport += "se.radley.plugin.salat.Binders._" 

templatesImport += "org.bson.types.ObjectId" 

testOptions in Test := Nil 

lessEntryPoints <<= baseDirectory(customLessEntryPoints) 

resolvers ++= Seq(Resolvers.sonatype, Resolvers.scalaSbt) 

object Resolvers { 
    val scalaSbt = Resolver.url("Scala Sbt", url("http://repo.scala-sbt.org/scalasbt/sbt-plugin-snapshots"))(Resolver.ivyStylePatterns) 
    val sonatype = Resolver.sonatypeRepo("snapshots") 
} 

और, modules/auth/build.sbt में: एसबीटी प्रलेखन से शुरू करें:

http://www.scala-sbt.org/0.13.0/docs/Getting-Started/Multi-Project.html

अब, अपने मुख्य परियोजना और उप परियोजनाओं निर्दिष्ट बनाने के लिए, और अपने मुख्य build.sbt फ़ाइल में अपने मुख्य परियोजना सेटिंग्स डाल

name := "myApp-auth" 

lessEntryPoints <<= baseDirectory(customLessEntryPoints) 

routesImport += "se.radley.plugin.salat.Binders._" 

templatesImport += "org.bson.types.ObjectId" 

testOptions in Test := Nil 

resolvers ++= Seq(Resolvers.sonatype, Resolvers.scalaSbt) 

वैसे भी यह फेरबदल का एक सा आवश्यकता हो सकती है,,:, प्रमाणन मॉड्यूल के लिए अपनी सेटिंग डाल लेकिन उम्मीद है कि आप बिंदु प्राप्त करें।

1

अगर एक build.scala उपयोग कर, आप एसबीटी की परियोजना के प्रकार और परियोजना मैक्रो का उपयोग

बदलें Project साथ play.Project और ठीक तर्क according to the ScalaDoc, ऐसा

lazy val auth = Project(
    appName + "-auth", 
    file("modules/auth")).settings(
     version := appVersion, 
     libraryDependencies ++= authDependencies, 
     lessEntryPoints <<= baseDirectory(customLessEntryPoints), 
     routesImport += "se.radley.plugin.salat.Binders._", 
     templatesImport += "org.bson.types.ObjectId", 
     testOptions in Test := Nil, 
     resolvers ++= Seq(Resolvers.sonatype, Resolvers.scalaSbt) 
    ) 

lazy val main = Project(
    appName, 
    file("app")).settings(
     version := appVersion, 
     libraryDependencies ++= mainDependencies, 
     scalacOptions += "-language:reflectiveCalls", 
     routesImport += "se.radley.plugin.salat.Binders._", 
     templatesImport += "org.bson.types.ObjectId", 
     testOptions in Test := Nil, 
     lessEntryPoints <<= baseDirectory(customLessEntryPoints), 
     resolvers ++= Seq(Resolvers.sonatype, Resolvers.scalaSbt) 
    ).dependsOn(auth).aggregate(auth) 

ही कुछ होना चाहिए परिभाषाओं का उपयोग build.sbt में किया जा सकता है। मैं भी सामान्य सेटिंग्स निकालने होगा:

val commonSettings = Seq(
    version := appVersion, 
    routesImport += "se.radley.plugin.salat.Binders._", 
    templatesImport += "org.bson.types.ObjectId", 
    testOptions in Test := Nil, 
    lessEntryPoints <<= baseDirectory(customLessEntryPoints), 
    resolvers ++= Seq(Resolvers.sonatype, Resolvers.scalaSbt) 
) 

lazy val auth = Project(
    appName + "-auth", 
    file("modules/auth")).settings(commonSettings: _*).settings(
     libraryDependencies ++= authDependencies 
    ) 

lazy val main = Project(
    appName, 
    file("app")).settings(commonSettings: _*).settings(
     libraryDependencies ++= mainDependencies, 
     scalacOptions += "-language:reflectiveCalls" 
    ).dependsOn(auth).aggregate(auth)