1

Liftプロジェクトの生成を高速化するためのスクリプトを作成しようとしていますが、空白の問題が発生していると思います。

val strLiftGen = "mvn archetype:generate -U\-DarchetypeGroupId=net.liftweb\
 -DarchetypeArtifactId=lift-archetype-blank\
 -DarchetypeVersion=1.0\
 -DremoteRepositories=http://scala-tools.org/repo-releases\-DgroupId=" + args(0)"\-DartifactId=" + args(1)"\-Dversion=1.0-SNAPSHOT */"

知恵の棒でニュービーを叩いて、このような長い弦を扱う賢い方法を教えてくれる人はいますか?

4

2 に答える 2

4

あなたの例には複数の構文エラーがあります(そしてとの後"\ "に欠落しています(コピー貼り付けエラー?)。これがあなたができることです:+args(0)args(1)

val strLiftGen =
  """mvn
  archetype:generate
  -U
  -DarchetypeGroupId=net.liftweb
  -DarchetypeArtifactId=lift-archetype-blank
  -DarchetypeVersion=1.0
  -DremoteRepositories=http://scala-tools.org/repo-releases
  -DgroupId=%s
  -DartifactId=%s
  -Dversion=1.0-SNAPSHOT"""

val cleanStr = strLiftGen.replace('\n',' ').replaceAll("\\s{2,}"," ").trim
println(cleanStr.format(args(0), args(1)))

次に、引数間の空白をどのように処理するかは、コマンドの実行方法に少し依存します。

于 2010-06-01T03:29:31.797 に答える
2

If you're trying to get a string with some occurrences of a backslash-escaped space, then you need to double up the backslash. As it stands, what you've shown will not actually compile because a single backslash may not immediately precede a space.

You may want to use a triple-quoted string, which suspends all backslash processing and allows embedded newlines. Backslashes never need to be doubled in triple-quoted strings.

于 2010-06-01T03:19:34.557 に答える