SBT, Jetty и Servlet 3.0 - PullRequest
       53

SBT, Jetty и Servlet 3.0

16 голосов
/ 27 марта 2012

У меня очень маленькая проблема.

У меня есть следующий файл build.sbt:

name := "Tueet"

libraryDependencies += "org.eclipse.jetty" % "jetty-webapp" % "8.1.2.v20120308"

После запуска обновления sbt я получаю следующее:

[info] Set current project to Tueet (in build file:/C:/dev/tueet/)
[info] Updating {file:/C:/dev/tueet/}default-d5e982...
[info] Resolving org.scala-lang#scala-library;2.9.1 ...
[info] Resolving org.eclipse.jetty#jetty-webapp;8.1.2.v20120308 ...
[info] Resolving org.eclipse.jetty#jetty-xml;8.1.2.v20120308 ...
[info] Resolving org.eclipse.jetty#jetty-util;8.1.2.v20120308 ...
[info] Resolving org.eclipse.jetty#jetty-servlet;8.1.2.v20120308 ...
[info] Resolving org.eclipse.jetty#jetty-security;8.1.2.v20120308 ...
[info] Resolving org.eclipse.jetty#jetty-server;8.1.2.v20120308 ...
[info] Resolving org.eclipse.jetty.orbit#javax.servlet;3.0.0.v201112011016 ...
[info] Resolving org.eclipse.jetty#jetty-continuation;8.1.2.v20120308 ...
[info] Resolving org.eclipse.jetty#jetty-http;8.1.2.v20120308 ...
[info] Resolving org.eclipse.jetty#jetty-io;8.1.2.v20120308 ...
[warn]  [NOT FOUND  ] org.eclipse.jetty.orbit#javax.servlet;3.0.0.v201112011016!javax.servlet.orbit (603ms)
[warn] ==== public: tried
[warn]   http://repo1.maven.org/maven2/org/eclipse/jetty/orbit/javax.servlet/3.0.0.v201112011016/javax.servlet-3.0.0.v201112011016.orbit
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn]  ::              FAILED DOWNLOADS            ::
[warn]  :: ^ see resolution messages for details  ^ ::
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn]  :: org.eclipse.jetty.orbit#javax.servlet;3.0.0.v201112011016!javax.servlet.orbit
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[error] {file:/C:/dev/tueet/}default-d5e982/*:update: sbt.ResolveException: download     failed: org.eclipse.jetty.orbit#javax.servlet;3.0.0.v201112011016!javax.servlet.orbit
[error] Total time: 1 s, completed 2012-03-27 14:33:34

Это глупо, так как работает в Maven без проблем.Я обнаружил, что это потому, что Orbit что-то делает с упаковкой (они, очевидно, установили ее на орбиту).

Я пытался сделать exclude ("org.eclipse.jetty.orbit", "javax.servlet"), но ничегослучилось, и это все еще нуждалось в этой зависимости.

Я не смог найти никакой информации о том, как на самом деле это исправить, может быть, кто-то поможет мне здесь:)

Обновление: представленная ошибка предоставляет обходной путь, поэтому для решения этой проблемы я фактически изменил build.sbt на

name := "Tueet"

libraryDependencies += "org.eclipse.jetty" % "jetty-server" % "8.1.2.v20120308"

ivyXML := 
<dependency org="org.eclipse.jetty.orbit" name="javax.servlet" rev="3.0.0.v201112011016">
<artifact name="javax.servlet" type="orbit" ext="jar"/>
</dependency>

Ответы [ 3 ]

8 голосов
/ 27 марта 2012

Смотрите эту ошибку: https://jira.codehaus.org/browse/JETTY-1493

Суть проблемы в том, что ivy не поддерживает расширение орбиты и должен сопоставить тип упаковки орбиты с jar.Не уверен, используете ли вы ivy или нет, но основная причина та же, вы можете увидеть, посмотрев URL-адрес, который он загружает из maven central.

В этой ошибке немного большепредыстория, по которой мы в первую очередь перешли на эти зависимости.

https://bugs.eclipse.org/bugs/show_bug.cgi?id=371954

6 голосов
/ 11 июля 2012

Я нашел обходной путь.Дополнительную информацию можно найти здесь: SBT, Jetty и Servlet 3.0 .

classpathTypes ~= (_ + "orbit")

libraryDependencies ++= Seq(
  "org.eclipse.jetty.orbit" % "javax.servlet" % "3.0.0.v201112011016" % "container"         artifacts (Artifact("javax.servlet", "jar", "jar")
  )
)

libraryDependencies ++= Seq(
  "org.eclipse.jetty" % "jetty-webapp" % "8.1.4.v20120524" % "container" artifacts            (Artifact("jetty-webapp", "jar", "jar"))
)
1 голос
/ 01 июля 2013

с весами 0,12+ (от: https://github.com/sbt/sbt/issues/499)

libraryDependencies ++= Seq(
    "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")
)
...