18

String[]であるパラメーターを持つMavenプラグインを作成しています。

このような:

/**
* @parameter expression="${args}"
*/
protected String[] args;

これは、次のようにPOMを介して利用できます。

<args>
  <arg>arg1</arg>
  <arg>arg2</arg>
<args>

しかし、コマンドラインから送信したい

-Dargs={arg1, arg2}

これは可能ですか?

4

5 に答える 5

10

私の知る限り、直接行うことはできませんが、区切られた文字列を受け入れて、それを自分で配列に分割するのはかなり一般的な方法です。

たとえば、maven-site-pluginではコンマ区切りのロケール文字列を指定できますが、maven-scala-pluginではパイプ区切り記号を使用して引数を定義できるようにすることでこれを処理します。関連する Mojo を見て、引数がどのように処理されるかを確認できます。

以下にいくつかの使用例を示します。

サイトプラグイン:

-Dlocales=enGB,frFR

スカラプラグイン:

-DaddArgs=arg1|arg2|arg3

更新: これをよりエレガントに処理したい場合は、maven-shared-io を使用して外部記述子ファイルの定義を許可し、記述子の場所をプロパティとして渡すことができます。これは、単一のコマンドライン引数が構成の構造を参照できることを意味します。

これがうまくいくと思われる場合は、プロパティ プラグインで外部記述子を使用する方法を説明するこの回答、または xml-maven-plugin で同様のことを行うこの回答をご覧くださいまたは、アセンブリ プラグインでアイデアを探すこともできます。

于 2009-08-27T08:53:30.187 に答える
8

最新のMaven(3.0.3)は次のもので動作するはずです:

-DaddArgs = arg1、arg2、arg3

于 2011-05-18T14:59:53.930 に答える