2017-01-09 9 views
0

内部のMaven 3プラグイン用のplugin.xmlメタデータファイルを作成しようとしています。 maven-plugin-pluginは、トップレベルのパラメタのメタデータを生成する優れた仕事をしますが、必須のプロパティなどのパラメータとして使用される複雑なオブジェクトの設定要件を検出して表現することはできません。コレクションおよび複合オブジェクトのmaven plugin.xmlパラメータメタデータを指定できません

@Mojo(name = "feature") 
public class FeatureMojo extends AbstractMojo { 

    @Parameter(required = true) 
    private List<Feature> features; 

    @Parameter(required = true) 
    private Feature feature; 
} 

public class Feature { 

    @Parameter(required = true) 
    private String name; 
} 

現在のplugin.xmlの出力は次のようになります。

<parameter> 
     <name>feature</name> 
     <type>local.example.mojo.Feature</type> 
     <required>true</required> 
     <editable>true</editable> 
     <description></description> 
    </parameter> 
    <parameter> 
     <name>features</name> 
     <type>java.util.List</type> 
     <required>true</required> 
     <editable>true</editable> 
     <description></description> 
    </parameter> 

は、この制限を回避する方法はありますか?

plugin.xmlをプラグイン記述子で表現することができ、これが単なるジェネレータの制限である場合は、手作業でplugin.xmlを生成することに悪影響がありません。

答えて

0

トップレベルオブジェクトのみを指定できます。次に、フィーチャーにnameのゲッターとセッターを与えます。それはそれは次のように動作させるために必要なすべてのです:

<configuration> 
    <features> 
    <feature> 
     <name>NAME</name> 
    </feature> 
    </features> 
</configuration> 

最高のは、あなたがこれらの追加要件を確認どこモジョに検証メソッドを追加することで、このようなインスタンス内の名前のための要件をチェックすることはできません。

ps。私はprivate Feature feature;を削除します。一般的には、シングルまたはマルチプルのどちらかを選択し、どちらも選択しないでください。

+0

十分に、これは残念な制限です。おそらく私はそれを調べるでしょう。 nakeのフィーチャーリファレンスは、どちらのメソッドも期待した結果を生み出していないことを示すだけでした。 –

+0

改善の余地はしばしばありますが、フィーチャがパラメータであるためパラメータアノテーションで解決されるとは思われません。名前はパラメータではなく、このインスタンスのフィールドです。 –

関連する問題