Как связать существующий Java-исполняемый файл в Maven Mojo - PullRequest
2 голосов
/ 05 апреля 2011

У меня есть существующая программа командной строки java, которая принимает bazillion аргументов и анализирует их, используя превосходные args4j .

Теперь я хочу создать плагин maven, который будет работатькод Java, содержащийся в этом приложении.

На данный момент я пробовал основной способ: репликация каждого аргумента командной строки в параметр mojo.Но я нахожу это исключительно скучным и подверженным ошибкам, так как аннотации maven mojo javadoc гораздо менее полны и интегрированы, чем аннотации args4j.

Итак, используя maven 3, есть ли лучший способ запустить мой исполняемый файлкак мавен моджо?О, пожалуйста, не говорите мне о exec-maven-plugin , так как в этом случае я нахожу его слишком ограниченным (мой исполняемый файл должен запускаться с использованием сочетания параметров проекта и параметров профиля пользователя,и я думаю, что простой вызов maven-exec-plugin не поможет).

Ответы [ 2 ]

2 голосов
/ 05 апреля 2011

Единственный способ - через параметры mojo, потому что это способ Maven, в частности для плагинов Maven.

Что я пропустил, чтобы определить файл свойств, который содержит конфигурацию в качестве альтернативы параметрам mojo. Но я думаю, что для плагинов Maven лучше всего иметь параметры Mojo.

1 голос
/ 06 апреля 2011

Хотя @ khmarbaise ответ совершенно верен с общей точки зрения, я хотел бы немного его расширить.

Мое автономное приложение командной строки использует args4j, но я думаю,процесс может быть достаточно хорошо скопирован с помощью Commons CLI или (даже более) JCommander , который опирается на те же аннотации командной строки в главном бине.

Итак, чтоЯ сделал это maven mojo, который с помощью самоанализа получает список аргументов командной строки основного компонента.Я ожидаю, что для каждого из этих аргументов свойство будет присутствовать в информации о проекте / настройках.Если это свойство присутствует, я создаю поддельную командную строку, используя опцию и связанную с ней, наконец.

После просмотра всех опций (сохраненных как свойства maven) я могу использовать args4j для заполнения моего компонента, а затем запуститьэтот бин использует свою основную команду.

Я думаю, что этот подход может быть достаточно хорошо обобщен при условии, что ваше приложение имеет набор флагов и метод без аргументов run().

...