我有一些项目将所有依赖项存储在pom.xml文件中.
我如何从内部检索依赖项,以便我可以轻松地将它们放到使用sbt的项目中?
复制粘贴所有这些只是耗时..
Geo*_*los 20
这个scala脚本从命令行运行,负责处理,将pom.xml文件转换为打印在屏幕上的sbt依赖项.然后,您只需为每个pom.xml文件复制一次粘贴.
注意:pom.xml必须与脚本位于同一文件夹中.然后从命令行执行:scala scriptname.scala
import scala.xml._
(XML.load("pom.xml") \\ "dependencies") \ "dependency" foreach ((dependency: Node) => {
val groupId = (dependency \ "groupId").text
val artifactId = (dependency \ "artifactId").text
val version = (dependency \ "version").text
val scope = (dependency \ "scope").text
val classifier = (dependency \ "classifier").text
val artifactValName: String = artifactId.replaceAll("[-\\.]", "_")
print("val %s = \"%s\" %% \"%s\" %% \"%s\"".format(artifactValName, groupId, artifactId, version))
scope match {
case "" => print("\n")
case _ => print(" %% \"%s\"\n".format(scope))
}
None
});
Run Code Online (Sandbox Code Playgroud)
我已经增强了George Pligor的答案(并修复了一些错误),因此build.sbt创建了一个包含来自的依赖项的完整文件pom.xml.要将Maven转换pom.xml为build.sbt:
PomToSbt.scalanext 的文件中pom.xmlscala PomToSbt.scala > build.sbtpom.xml将提取依赖关系并将其放入完整的build.sbt文件中.这是代码:
import scala.xml._
val lines = (XML.load("pom.xml") \\ "dependencies") \ "dependency" map { dependency =>
val groupId = (dependency \ "groupId").text
val artifactId = (dependency \ "artifactId").text
val version = (dependency \ "version").text
val scope = (dependency \ "scope").text
val classifier = (dependency \ "classifier").text
val artifactValName: String = artifactId.replaceAll("[-\\.]", "_")
val scope2 = scope match {
case "" => ""
case _ => s""" % "$scope""""
}
s""" "$groupId" %% "$artifactId" % "$version"$scope2"""
}
val buildSbt = io.Source.fromURL("https://raw.githubusercontent.com/mslinn/sbtTemplate/master/build.sbt").mkString
val libText = "libraryDependencies ++= Seq("
val buildSbt2 = buildSbt.replace(libText, libText + lines.mkString("\n", ",\n", ""))
println(buildSbt2)
Run Code Online (Sandbox Code Playgroud)
我提出了一个要点 ; 如果需要更新,我会在那里进行更新.
| 归档时间: |
|
| 查看次数: |
9953 次 |
| 最近记录: |