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
文件中解析依赖项,因此您需要将 javaCore
、javaJdbc
和 javaEbean
中的依赖项添加到您的 ivy 文件中解决方案。其他症结包括注意文件描述符的三个斜杠。
我想使用 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
文件中解析依赖项,因此您需要将 javaCore
、javaJdbc
和 javaEbean
中的依赖项添加到您的 ivy 文件中解决方案。其他症结包括注意文件描述符的三个斜杠。