Search code examples
scalasbtlwjgl

Unable to download lwjgl3-awt from Maven using SBT


Following simple SBT fails to import org.lwjglx / lwjgl3-awt:

name := "LWJGLTest"

version := "0.1"

scalaVersion := "2.12.8"

libraryDependencies += "org.lwjglx" % "lwjgl3-awt" % "0.1.5"

The error is:

[warn]  Detected merged artifact: [FAILED     ] org.lwjgl#lwjgl-opengl;3.2.2!lwjgl-opengl.jar:  (0ms).
[warn]  Detected merged artifact: [FAILED     ] org.lwjgl#lwjgl;3.2.2!lwjgl.jar:  (0ms).
[warn] ==== public: tried
[warn] ==== public: tried
[warn]   https://repo1.maven.org/maven2/org/lwjgl/lwjgl-opengl/3.2.2/lwjgl-opengl-3.2.2-natives-${platform}.jar
[warn]   https://repo1.maven.org/maven2/org/lwjgl/lwjgl/3.2.2/lwjgl-3.2.2-natives-${platform}.jar
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn]  ::              FAILED DOWNLOADS            ::
[warn]  :: ^ see resolution messages for details  ^ ::
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn]  :: org.lwjgl#lwjgl;3.2.2!lwjgl.jar
[warn]  :: org.lwjgl#lwjgl-opengl;3.2.2!lwjgl-opengl.jar
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[error] sbt.librarymanagement.ResolveException: download failed: org.lwjgl#lwjgl;3.2.2!lwjgl.jar
[error] download failed: org.lwjgl#lwjgl-opengl;3.2.2!lwjgl-opengl.jar

Is this an issue with SBT, or with the lwjgl3-awt artifact? Is there some way how to work around it?

For a comparison, following sbt loads fine:

name := "LWJGLTest"

version := "0.1"

scalaVersion := "2.12.8"

libraryDependencies += "org.lwjgl" % "lwjgl" % "3.2.2"

libraryDependencies += "org.lwjgl" % "lwjgl-opengl" % "3.2.2"

Solution

  • Following workaround allows to proceed by specifying the necessary dependencies manually:

    libraryDependencies += "org.lwjgl" % "lwjgl" % "3.2.2"
    
    libraryDependencies += "org.lwjgl" % "lwjgl-opengl" % "3.2.2"
    
    libraryDependencies += "org.lwjglx" % "lwjgl3-awt" % "0.1.5" excludeAll ExclusionRule("org.lwjgl")
    

    I think the problem is SBT somehow does not understand the ${platform} in the pom.xml. The solution above prevents it trying to resolve those dependencies, which is why they are provided explicitly.