gpt4 book ai didi

scala - 为什么 sbt compile 不会将非托管资源复制到类路径?

转载 作者:行者123 更新时间:2023-12-04 01:54:33 25 4
gpt4 key购买 nike

你能告诉我为什么sbt compile不将非托管资源复制到类路径?另一方面sbt package做。因此,除非我调用 package,否则我无法开始调试手动调用:(

我正在使用 SBT 0.12.1

下面是我的 build.sbt。

import AssemblyKeys._ // put this at the top of the file

net.virtualvoid.sbt.graph.Plugin.graphSettings

assemblySettings

organization := "com.zzz"

version := "0.1"

scalaVersion := "2.10.2"

scalacOptions := Seq("-unchecked", "-language:reflectiveCalls,postfixOps,implicitConversions", "-deprecation", "-feature", "-encoding", "utf8")

unmanagedResourceDirectories in Compile <++= baseDirectory { base =>
Seq( base / "src/main/webapp" )
}

jarName in assembly := "zzz.jar"

mergeStrategy in assembly <<= (mergeStrategy in assembly) { (old) =>
{
case "rootdoc.txt" => MergeStrategy.discard
case x => old(x)
}
}

mainClass in assembly := Some("com.zzz.Boot")

name := "zzz"

// disable using the Scala version in output paths and artifacts
crossPaths := false

artifactName := { (sv: ScalaVersion, module: ModuleID, artifact: Artifact) =>
artifact.name + "." + artifact.extension
}

resolvers ++= Seq(
"spray repo" at "http://repo.spray.io/"
)

libraryDependencies ++= {
val sprayVersion = "1.2-M8"
val akkaVersion = "2.2.0-RC1"
Seq(
"io.spray" % "spray-servlet" % sprayVersion withSources(),
"io.spray" % "spray-can" % sprayVersion withSources(),
"io.spray" % "spray-routing" % sprayVersion withSources(),
"com.typesafe.akka" %% "akka-actor" % akkaVersion,
"org.eclipse.jetty" % "jetty-webapp" % "8.1.7.v20120910" % "container",
"org.eclipse.jetty.orbit" % "javax.servlet" % "3.0.0.v201112011016" % "container" artifacts Artifact("javax.servlet", "jar", "jar"),
"net.sourceforge.htmlcleaner" % "htmlcleaner" % "2.2",
"org.apache.httpcomponents" % "httpclient" % "4.2.3",
"org.apache.commons" % "commons-lang3" % "3.1",
"org.mongodb" %% "casbah" % "2.6.0",
"com.romix.scala" % "scala-kryo-serialization" % "0.2-SNAPSHOT",
"org.codehaus.jettison" % "jettison" % "1.3.3",
"com.osinka.subset" %% "subset" % "2.0.1",
"io.spray" %% "spray-json" % "1.2.5" intransitive()
)
}

seq(Revolver.settings: _*)

seq(webSettings: _*)

seq(Twirl.settings: _*)

最佳答案

compile的工作是编译源,所以它通常不会做任何与处理资源相关的事情。但是,资源需要在 run 的类目录中。 , package , test , console ,以及任何其他使用 fullClasspath 的内容.这是由 fullClasspath 完成的合并 exportedProducts ,是当前项目生成的类和资源,dependencyClasspath ,它们是来自依赖项的类路径条目。

适当的解决方案取决于需要什么资源。从命令行运行 exported-products做一个compile以及 copy-resources .以编程方式,您通常希望依赖 fullClasspathexportedProducts .

作为旁注,您通常可以使用 the inspect command 找出任务的作用。 .

关于scala - 为什么 sbt compile 不会将非托管资源复制到类路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17566474/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com