Плагин Maven exec – пользовательские аргументы с консоли после жестко заданных аргументов

Я реализую простой сервер и клиент 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. Все решения, которые я нашел, перезаписывали жестко закодированные аргументы при указании новых аргументов из консоли, и это нежелательно. Можно ли это как-то сделать?


person Wojtek    schedule 23.03.2013    source источник


Ответы (1)


Это своего рода извращенный обходной путь, но я не мог придумать другого способа добиться того, чего вы хотите.

Определите свойство в вашем 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.argument.from.console=value.you.want

person pvm14    schedule 24.03.2013
comment
Спасибо за ответ, я нашел аналогичный ответ здесь: stackoverflow.com/a/3422989/1066357 Это немного обходной путь, но после стольких поисков я не могу надеяться найти что-то лучше. Спасибо! - person Wojtek; 24.03.2013