मेरे पास यह हैलो वर्ल्ड प्लगइन है:

object HelloPlugin extends AutoPlugin {

  object autoImport {
    val sayHello: TaskKey[Unit] = TaskKey("saying hello")
  }

  import autoImport._
  override def projectSettings = Seq(

    sayHello := {
      println("------------------------------------ heeeeeeeeeeeeeeeelooooooooo -------------------")
    }
  )

}

मैं संकलन समय से पहले और बाद में अपने sayHello कार्य का उपयोग करना चाहता हूं। मैं यह कैसे कर सकता हूं?

मुझे सापेक्ष प्रश्न मिला, लेकिन यह AutoPlugin के विस्तार के बारे में नहीं है।

0
faoxis 3 अगस्त 2018, 00:05

2 जवाब

आपको बस उस उत्तर को अपनी स्थिति के अनुकूल बनाने की आवश्यकता है। उत्तर वही रहता है: dependsOn का उपयोग करें, लेकिन build.sbt के बजाय आप इसे अपने प्लगइन के projectSettings में जोड़ें:

override def projectSettings = Seq(
  sayHello := { ... },
  Compile/compile := (Compile/compile).dependsOn(sayHello).value
)
0
laughedelic 3 अगस्त 2018, 02:20
महान! लेकिन मुझे समझ में नहीं आता कि मैं Compile/compile कैसे आयात कर सकता हूं। IntelliJ Idea मेरी मदद नहीं कर सकता। :( साथ ही, क्या मैं कंपाइल करने के बाद भी कुछ बना सकता हूँ?
 – 
faoxis
3 अगस्त 2018, 08:00
"आयात Compile/compile" से आपका क्या तात्पर्य है? यदि आप sbt 0.13 का उपयोग कर रहे हैं, तो इसके बजाय compile in Compile लिखें। कार्य के बाद कुछ करने के लिए इसे पढ़ें: scala-sbt.org /release/docs/Howto-Sequential-Task.html
 – 
laughedelic
5 अगस्त 2018, 00:11

आपको compile TaskKey को ओवरराइड करना होगा, जैसे:

override def projectSettings: Seq[Def.Setting[_]] = Seq(
    compile in Compile := Def.taskDyn {
          hello.value // call before
          val c = (compile in Compile).value // actual compilation
          Def.task {
            hello.value // call after
            c
          }
        }.value
)

def hello: Def.Initialize[Task[Unit]] = Def.task {
   println("hello")
}

दस्तावेज़: https://www। scala-sbt.org/1.0/docs/Howto-Dynamic-Task.html#build.sbt+v2

0
Atais 30 अगस्त 2018, 21:51