依存関係がすべてpom.xml個のファイルに格納されているプロジェクトがあります。pom xmlをsbt依存関係に変換するにはどうすればよいですか?
内部から依存関係を取得して、sbtを使用するプロジェクトに簡単に配置する方法はありますか?それらのすべてを貼り付け
コピーはちょうど時間がかかる..です
依存関係がすべてpom.xml個のファイルに格納されているプロジェクトがあります。pom xmlをsbt依存関係に変換するにはどうすればよいですか?
内部から依存関係を取得して、sbtを使用するプロジェクトに簡単に配置する方法はありますか?それらのすべてを貼り付け
コピーはちょうど時間がかかる..です
コマンドラインから実行これScalaのスクリプトは、画面上に印刷されたSBTの依存関係をpom.xmlファイルを変換し、それの世話をします。次に、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
});
をこのblog entryは、1つの可能な方法を説明します。より複雑なケースを扱うプラグインを指すコメントがあります。
私はGeorge Pligorの答えを強化し(いくつかのバグを修正した)、build.sbt
というファイルが作成され、pom.xml
の依存関係が組み込まれています。 build.sbt
にMavenのpom.xml
を変換するには:
pom.xml
scala PomToSbt.scala > build.sbt
pom.xml
からの依存関係が完全にbuild.sbt
ファイルに抽出して配置されます隣PomToSbt.scala
と呼ばれます。ここ コードである:
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)
I made a gist。更新が必要な場合は、私はそこに置くでしょう。
thx! ammを使ってpomファイルの引数を渡す可能性を追加しました:https://gist.github.com/dportabella/3512f92a60325d8375e5ceb942b911da –
マイクは、ここで少なくともScalaの11で動作するコードです:
import scala.xml._
//build.sbt file
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: String = io.Source.fromURL("https://raw.githubusercontent.com/mslinn/sbtTemplate/master/build.sbt").mkString
val libText = "libraryDependencies ++= Seq\\("
val buildSbt2 = buildSbt.replaceFirst(libText, libText + lines.mkString("\n", ",\n", ""))
println(buildSbt2)
import scala.xml._
// To convert a Maven pom.xml to build.sbt:
// 1) Place this code into a file called PomToSbt.scala next to pom.xml
// 2) Type scala PomtoSbt.scala > build.sbt
// The dependencies from pom.xml will be extracted and place into a complete build.sbt file
// Because most pom.xml files only refernence non-Scala dependencies, I did not use %%
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)
私はスカラ座で '輸入scala.xml._' を追加する必要が2.10.0 – pic
@George Pligor I依存関係のSeqを作成するためにこれを少し修正しました(私自身のバグが追加されました)。私は任意のコメントが私に教えてください:) https://github.com/matanster/pomToSbt – matanster
thx! ammを使ってpomファイルの引数を渡す可能性を追加しました:https://gist.github.com/dportabella/3512f92a60325d8375e5ceb942b911da –