Системное свойство для вложенного процесса maven - PullRequest
1 голос
/ 18 апреля 2011

Я хотел настроить работу Hudson, чтобы выпустить наш проект из Hudson. Но у меня есть проблема: наш процесс сборки запускает тесты, которые требуют подключения к БД, хост: порт БД указывается в качестве параметра системы Но когда я пытаюсь выпустить такой системный параметр: prepare создается впечатление, что он создает вложенный процесс и не передает ему никаких системных параметров. Как передать системный параметр вложенному процессу?

Могу ли я сделать это с профилями Maven?

Спасибо за любые комментарии!

Ответы [ 2 ]

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

pom.xml не может может прочитать свойства системы, см. Свойства переменных среды .Но вы не должны писать пометки, привязанные к переменным, присутствующим только на конкретном компьютере.Пример: JAVA_HOME работает везде, mydatabase.username нет.

Правильный способ - записать конфигурацию в файл свойств и прочитать ее из pom.Таким образом, вы получите документированную конфигурацию вместо системных переменных «кто знает».Это также менее сложно, чем хранить скрипт оболочки с параметрами -D.

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

Свойства -D не будут достоверно распространяться от верного подключения к вашему тесту (я не знаю, почему он работает с Eclipse).При использовании maven в командной строке используйте свойство argLine , чтобы обернуть ваше свойство.Это передаст их вашему тесту

mvn -DargLine="-D<property>=<value>" <goal>

Используйте System.getProperty, чтобы прочитать значение в вашем коде.Посмотрите этот пост о разнице System.getenv и Sytem.getProperty.

(Это взято из предыдущего ответа от меня.)

...