2011-08-14 14 views
8

मैं लिफ्ट वेब फ्रेमवर्क के साथ एक स्कैला एसबीटी प्रोजेक्ट स्थापित करने की कोशिश कर रहा हूं। मैंएसबीटी वेब प्लगइन: वैध कुंजी नहीं: जेटी-रन (समान: जेटी-पोर्ट, जेटी-कॉन्टेक्ट, रन)

उपयोग कर रहा हूँ
  • स्केला 2.9.0-1
  • एसबीटी 0.10.1
  • लिफ्ट 2.3
  • xsbt-वेब-प्लगइन 0.1.1 (जो केवल स्केला 2.8.1 पर है, को देखने के प्रश्न का अंत)

(हाल के संस्करण मुझे पता है)। मैं http://d.hatena.ne.jp/k4200/20110711/1310354698 और https://github.com/siasia/xsbt-web-plugin/blob/master/README.md पीछा निम्नलिखित एसबीटी विन्यास फाइल प्राप्त करने के लिए:

परियोजना/build.properties

sbt.version=0.10.1

परियोजना/plugins/build.sbt

resolvers += "Web plugin repo" at "http://siasia.github.com/maven2" 

libraryDependencies <+= sbtVersion(v => "com.github.siasia" % "xsbt-web-plugin_2.8.1" % ("0.1.1-"+v)) 

परियोजना/बनाएँ। स्कैला

import sbt._ 
import Keys._ 

object BuildSettings { 
    val buildOrganization = "xbaz" 
    val buildScalaVersion = "2.9.0-1" 
    val buildVersion  = "0.0.1" 

    val buildSettings = Defaults.defaultSettings ++ Seq (
    organization := buildOrganization, 
    scalaVersion := buildScalaVersion, 
    version  := buildVersion) 
} 

object Resolvers { 
    val webPluginRepo = "Web plugin repo" at "http://siasia.github.com/maven2" 
    val jettyRepo = "Jetty Repo" at "http://repo1.maven.org/maven2/org/mortbay/jetty" 
} 

object Dependencies { 

// web plugin 
    val webPluginDeps = Seq(
    "org.mortbay.jetty" % "jetty" % "6.1.26" % "jetty", // The last part is "jetty" not "test". 
    "javax.servlet" % "servlet-api" % "2.5" % "provided->default" 
) 

    val liftDeps = { 
    val liftVersion = "2.3" // I'll switch to 2.3 soon! 
    Seq(
     "net.liftweb" % "lift-webkit_2.8.1" % liftVersion % "compile->default", 
     "net.liftweb" % "lift-mapper_2.8.1" % liftVersion % "compile->default" 
    ) 
    } 

    val scalaTest = "org.scalatest" % "scalatest_2.9.0" % "1.6.1" % "test" 
    val apacheHttpClient = "org.apache.httpcomponents" % "httpclient" % "4.1.1" 
    val apacheHttpCore = "org.apache.httpcomponents" % "httpcore" % "4.1.1" 

    // Logging 
    lazy val grizzled = "org.clapper" % "grizzled-slf4j_2.8.1" % "0.5" 
    lazy val junit = "junit" % "junit" % "4.8" % "test" 
    lazy val logback_core = "ch.qos.logback" % "logback-core" % "0.9.24" % "compile" //LGPL 2.1 
    lazy val logback_classic = "ch.qos.logback" % "logback-classic" % "0.9.24" % "compile" //LGPL 2.1 
    lazy val log4j_over_slf4j = "org.slf4j" % "log4j-over-slf4j" % "1.6.1" 


    val logDeps = Seq(grizzled, log4j_over_slf4j, logback_core, logback_classic) 
} 


object MyBuild extends Build { 
    import com.github.siasia.WebPlugin._ // web plugin 
    import BuildSettings._ 
    import Dependencies._ 
    import Resolvers._ 

    //End dependencies 

    lazy val root = Project("root", file(".") , settings = buildSettings ++ 
    Seq(name := "foo") 
) aggregate(core, cli, web) 
    // mainClass:= Some("Main")) 

    lazy val core : Project = Project("core", file("core"), delegates = root :: Nil, settings = buildSettings ++ 
    Seq(
    name := "foo-core", 
    libraryDependencies ++= logDeps ++ Seq(scalaTest, apacheHttpClient, apacheHttpCore) 
    ) 
) 

    lazy val cli: Project = Project("cli", file("cli"), settings = buildSettings ++ 
    Seq(
    name := "foo-cli", 
    libraryDependencies ++= logDeps ++ Seq(apacheHttpClient), 
    fork in run := true, 
    javaOptions in run += "-Djava.library.path=/home/jolivier/Projets/asknow/lib/jnotify-lib-0.93" 
)) dependsOn(core) settings(
) 

    lazy val web: Project = Project("web", file("web"), settings = buildSettings ++ 
    Seq (resolvers := Seq(webPluginRepo, jettyRepo), 
    name := "foo-http", 
    libraryDependencies ++= logDeps ++ webPluginDeps ++ liftDeps 
    ) ++ 
    webSettings 
) dependsOn(core) 
} 

जब मैं एसबीटी घाट रन की कोशिश मैं निम्न त्रुटि संदेश मिलता है:

[error] Not a valid command: jetty-run 
[error] Not a valid project ID: jetty-run 
[error] Not a valid configuration: jetty-run 
[error] Not a valid key: jetty-run (similar: jetty-port, jetty-context, run) 
[error] jetty-run 
[error] 

तो मैंने देखा है कि कुछ jetty- * आदेशों मौजूद है, लेकिन नहीं एक मैं चाहता हूँ, इसलिए मैं webSettings जो माना जाता है मुद्रित इन सभी नई सेटिंग्स में शामिल हैं और इसमें जेटी-संदर्भ और जेटी-पोर्ट, साथ ही जेटी-कॉन्फ़िगरेशन और अन्य शामिल हैं, लेकिन जेटी-रन नहीं हैं: एस।

जेटी रन चलाने के लिए मुझे क्या गलत लगा?

मैंने स्कैला-2.8.1 पर स्विच करने का प्रयास किया क्योंकि वेब प्लगइन वर्तमान में केवल स्केल 2.8.1 पर है, मेरे buildScalaVersion चर बदलकर, लेकिन कुछ भी नहीं बदला। क्या तुम्हारे पास कोई विचार है?

आपकी मदद के लिए अग्रिम धन्यवाद

उत्तर

5

कार्य एकत्रित किए गए हैं; आदेश नहीं हैं।

jetty-run एक आदेश है। यह केवल वेब प्लगइन सेटिंग्स के साथ उप-परियोजना के संदर्भ में उपलब्ध है।

> project web 
> jetty-run 

एक बार जब यह चल रहा है, आप webapp पुनर्वितरित करने prepare-webapp कार्य का उपयोग कर सकते हैं। इसे root प्रोजेक्ट के संदर्भ से चलाया जा सकता है, क्योंकि यह वेब प्रोजेक्ट को जोड़ता है।

+0

ओह ठीक है, मैं एसबीटी के लिए काफी नया हूं और इस तरह की सूक्ष्मता नहीं मिली, मैंने वेब/जेटी-रन की भी कोशिश की क्योंकि मैं क्ली/रन के साथ दौड़ना शुरू करता हूं लेकिन यह काम नहीं करता है ... मुझे बाइनरी अक्षमताओं के लिए स्कैला-2.8.1 पर भी स्विच करना पड़ा लेकिन यह अब अच्छा लग रहा है :) बहुत बहुत धन्यवाद! – jolivier

+3

मुझे 'मान्य प्रोजेक्ट आईडी नहीं है: वेब' त्रुटि – Jus12

संबंधित मुद्दे