4

シンプルな RMI サーバーとクライアントを実装しています。サーバーのコードベースを毎回追加するという面倒な作業 (大量の端末肥大化テキスト) をスピードアップしたかったので、maven exec プラグインを使用することにしました。これが私のpom.xml見た目の一部です。

<build>
    <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <version>1.2.1</version>
            <configuration>
                <executable>java</executable>
                <arguments>
                    <argument>-classpath</argument>
                    <argument>/media/files/EclipseWorkspace/JavaSE/rozprochy/lab2/RmiServer/target/classes</argument>
                    <argument>-Djava.rmi.server.codebase=file:/media/files/EclipseWorkspace/JavaSE/rozprochy/lab2/RmiServer/target/classes/</argument>
                    <argument>engine.ComputeEngine</argument>
                </arguments>
            </configuration>
        </plugin>
    </plugins>
</build>

mvn exec:execコンソールで実行すると、すべて問題ありません。たとえば、プログラムへの引数として rmiregistry ポートをユーザーに指定させたい場合に、問題が発生します。基本的に、POM ファイルで指定されたものに加えて、コンソールから追加の引数を追加したいと思います。私が見つけたすべてのソリューションは、コンソールから新しい引数を指定するときに、ハードコードされた引数を上書きしましたが、これは望ましくありません。どういうわけかこれを行うことは可能ですか?

4

1 に答える 1

3

これは一種のねじれた回避策ですが、あなたが望むものを達成する他の方法は考えられませんでした

追加パラメーターのデフォルト値を使用して、pom でプロパティを定義します。

<properties>
    <extra.argument.from.console>extra.argument.from.console.default.value</extra.argument.from.console>
</properties>

実行時に、そのプロパティを引数として追加します

<argument>${extra.argument.from.console}</argument>

デフォルト値を使用したくない場合は、Mavenを呼び出すときにそのプロパティに値を与えます

mvn exec:exec -Dextra.ar​​gument.from.console=value.you.want

于 2013-03-24T14:32:16.730 に答える