如何将war文件部署到Jetty?

时间:2014-10-18 13:41:05

标签: jetty sbt war

我正在使用一个产生战争的开源项目。我想将它部署到Jetty服务器。我想创建一个带有Main类的sbt项目,它会触发一个jetty服务器,然后在war上面部署它。

我面临的问题是如何告诉码头部署战争。即使我把战争作为一种依赖,我仍然不会在我的项目中进行战争。

我试过的一件事就是添加

retrieveManaged := true

build.sbt中,它将所有依赖项复制到managed_lib文件夹,但这看起来很难看。

我无法将战争项目移至SBT

有什么好方法吗?

1 个答案:

答案 0 :(得分:1)

您需要采取的步骤基本如下:

  1. 创建一个sbt任务,可以访问war文件

  2. 将war文件的位置传达给您的代码

  3. 告诉Jetty文件的位置


  4. 请注意,代码未经测试,但它应该为您提供一些内容

    1

    val warFile = taskKey[File]("A reference to the war file")
    
    warFile := {
      val filter = artifactFilter(name = "name of warfile")
      val updateReport = update.value
      updateReport.filter(filter).toSeq.headOption.map {
        case (config, module, artifact, file) => file
      }.getOrElse(sys.error("Could not find a warfile"))
    }
    

    2

    project/buildinfo.sbt添加addSbtPlugin("com.eed3si9n" % "sbt-buildinfo" % "0.3.2")

    buildInfoPackage := "your.package",
    buildInfoObject := "BuildInfo",
    buildInfoKeys := Seq[BuildInfoKey](
      warFile
    ),
    sourceGenerators in Compile <+= buildInfo
    

    3

    val warFile = new File(BuildInfo.warFile)
    // pass to Jetty