Ivy + SBT .12.2 + Play Framework 2.1 - 解析外部 Ivy 文件

Ivy + SBT .12.2 + Play Framework 2.1 - Resolving External Ivy File

我想使用 SBT .12.2 来解析外部 ivy.xml 文件中列出的依赖项,以便我的 Play 应用程序可以在 compile/runtime 解析。我正在使用 IvyDE 插件用于 eclipse,Ivy 可以自行解决 ivy.xml 文件中的依赖项。

我尝试 follow these docs,所以这是我目前的 Build.scala:

object ApplicationBuild extends Build {

    val appName = "App"
    val appVersion = "{VERSION}"

    val appDependencies = Seq(
        javaCore,
        javaJdbc,
        javaEbean
    )

    resolvers += Resolver.file("Local repo", file(System.getProperty("user.home") + "/.ivy2/local"))(Resolver.ivyStylePatterns)
    externalIvySettingsURL(url("file://L:/Utils/ivySettings/ivysettings.xml"))
    externalIvyFile( baseDirectory { base => base / "ivy.xml"} )

    classpathConfiguration in Compile := config("play")
    classpathConfiguration in Test := config("play")
    classpathConfiguration in Runtime := config("play")


    val main = play.Project(appName, appVersion, appDependencies).settings(

    )
}

和我的 ivy.xml:

<ivy-module version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd">

    <info
        organisation="Company"
        module="App"
        status="Integration">
    </info>

    <configurations>
        <conf name="sources" description="Sources of this library" />
        <conf name="play" description="Building our play library" />  
        <conf name="test" description="Building our test library" />  
    </configurations>

    <dependencies>
        <dependency org="Apache" name="elasticsearch" rev="2.1.0" />
        <dependency org="Apache" name="json-simple" rev="1.1.1" />          
        <!-- Used for testing -->
        <dependency org="Apache" name="Selenium" rev="2.42" conf="test->default" />     
    </dependencies>
</ivy-module>

当我启动 Play 并调用 dependencies 命令时,我没有看到列出这些依赖项,并且它们在运行时不存在。 Play 唯一可以看到的文件是在 appDependencies 中定义的文件。我使用的是非标准版本控制模式,但如果我的设置文件未被提取,我至少应该能够看到无法找到依赖项。

提前致谢!

好的,文档中的大部分初始语法都很接近,但我没有在我的 Play 项目的上下文中应用任何这些设置。此外,我没有将我的解析器指向正确的目录。我的 ivy.xml 文件没问题。

  val appName         = "My-Application"
  val appVersion    = ".1"

  val appDependencies = Seq(
    javaCore,
    javaJdbc,
    javaEbean
  )
    resolvers += Resolver.file("Local repo", file("C:/Utils/lib"))(Resolver.ivyStylePatterns)

    val main = play.Project(appName, appVersion, appDependencies).settings(
        externalIvySettingsURL(url("file:///C:/Utils/ivySettings/ivysettings-ian.xml")),
        externalIvyFile(),
        classpathConfiguration in Compile := config("play"),
        classpathConfiguration in Test := config("play"),
        classpathConfiguration in Runtime := config("play"),
        organization := "Company"
    )

SBT 将仅在 ivy.xml 文件中解析依赖项,因此您需要将 javaCorejavaJdbcjavaEbean 中的依赖项添加到您的 ivy 文件中解决方案。其他症结包括注意文件描述符的三个斜杠。