【问题标题】:Ivy + SBT .12.2 + Play Framework 2.1 - Resolving External Ivy FileIvy + SBT .12.2 + Play Framework 2.1 - 解析外部 Ivy 文件
【发布时间】:2016-05-14 12:05:39
【问题描述】:

我想使用 SBT .12.2 来解析外部 ivy.xml 文件中列出的依赖项,以便我的 Play 应用程序可以在编译/运行时解析。我用的是eclipse的ivyDE插件,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 中定义的文件。我使用的是非标准版本控制模式,但如果我的设置文件没有被拾取,我至少应该能够看到找不到依赖项。

提前致谢!

【问题讨论】:

    标签: playframework playframework-2.0 sbt ivy


    【解决方案1】:

    好的,我在文档中的大部分初始语法都很接近,但我没有在我的 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 文件中以进行解析。其他问题包括注意文件描述符的三个斜线。

    【讨论】:

      猜你喜欢
      • 2014-10-15
      • 2014-08-21
      • 2012-05-13
      • 2018-01-12
      • 2011-11-13
      • 2011-10-05
      • 1970-01-01
      • 2011-05-14
      • 2014-08-02
      相关资源
      最近更新 更多