我正在将Scala Migrations项目从 ant/ivy 转移到 sbt。它可以选择使用 log4jdbc 作为任何公共 Maven 存储库中不存在的库依赖项(从我能找到的)。
libraryDependencies +=
"log4jdbc" % "log4jdbc" % "1.1" from "http://log4jdbc.googlecode.com/files/log4jdbc4-1.1.jar"
我希望生成的 POM 不包含 log4jdbc,因为它不在任何存储库中。如果不列出 log4jdbc,POM 会更好,这是一个正确的假设吗?此外,对于使用 sbt 的 Scala Migrations 用户来说,列出它会不会更好?
我编写了以下设置以从 POM 中删除 log4jdbc 依赖项。有没有更好、更简单的方法?可以将设置添加到 sbt 以自动执行此操作吗?
// Do not include log4jdbc as a dependency.
pomPostProcess := { (node: scala.xml.Node) =>
val rewriteRule =
new scala.xml.transform.RewriteRule {
override def transform(n: scala.xml.Node): scala.xml.NodeSeq = {
val name = n.nameToString(new StringBuilder).toString
if (name == "dependency") {
if ((n \ "groupId").text == "log4jdbc")
scala.xml.NodeSeq.Empty
else
n
}
else {
n
}
}
}
val transformer = new scala.xml.transform.RuleTransformer(rewriteRule)
transformer.transform(node)(0)
}