Укажите системное свойство для проекта Maven

Есть ли способ (я имею в виду, как я) установить системное свойство в проекте maven?

Я хочу получить доступ к свойству из моего теста и моего webapp (работает локально), и я знаю, что могу использовать свойство java-системы.

Должен ли я помещать это в ./settings.xml или что-то в этом роде?

контекст

Я взял проект с открытым исходным кодом и смог изменить конфигурацию db для использования JavaDB

Теперь, в URL-адресе jdbc для JavaDB, местоположение базы данных можно указать как полный путь (см .: этот другой вопрос )

Или системное свойство: derby.system.home

У меня уже работает код, но в настоящее время он жестко закодирован:

  jdbc:derby:/Users/oscarreyes/javadbs/mydb 

И я хочу удалить полный путь, чтобы оставить его как:

  jdbc:derby:mydb 

Для этого мне нужно указать системное свойство ( derby.system.home ) на maven, но я не знаю, как это сделать.

Тест выполняется с помощью junit (я не вижу плагина в pom.xml), а веб-приложение работает с плагином причала.

Указание свойства системы в командной строке, похоже, работает на причал, но я не уверен, что это что-то практическое (если некоторые другие пользователи могут запускать его из eclipse / idea / whatever)

Есть ли способ (я имею в виду, как я) установить системное свойство в проекте maven? Я хочу получить доступ к свойству из моего теста […]

Вы можете установить системные свойства в конфигурации Maven Surefire Plugin (это имеет смысл, поскольку тесты разворачиваются по умолчанию). Из использования свойств системы :

  [...]    org.apache.maven.plugins maven-surefire-plugin 2.5   propertyValue ${project.build.directory} [...]      [...]  

и мой webapp (работает локально)

Не уверен, что вы имеете в виду здесь, но я предполагаю, что контейнер webapp запускается Maven. Вы можете передать свойства системы в командной строке, используя:

 mvn -DargLine="-DpropertyName=propertyValue" 

Обновление: Хорошо, получилось. Для Jetty вы также можете установить свойства системы в конфигурации Maven Jetty Plugin. От установки свойств системы :

  ...  ...  org.mortbay.jetty maven-jetty-plugin  ...   propertyName propertyValue  ...      

Плагин свойств-maven- plugin может помочь:

  org.codehaus.mojo properties-maven-plugin 1.0.0    set-system-properties     my.property.name my.property.value       

Я узнал, что это также возможно сделать с помощью exec-maven-plugin, если вы выполняете «автономное» java-приложение.

   org.codehaus.mojo exec-maven-plugin ${maven.exec.plugin.version}    java     ${exec.main-class}   myproperty myvalue     

Если ваш тест и webapp находятся в одном проекте Maven, вы можете использовать свойство в проекте POM. Затем вы можете отфильтровать определенные файлы, которые позволят Maven установить свойство в этих файлах. Существуют различные способы фильтрации, но наиболее часто встречаются во время фазы ресурсов – http://books.sonatype.com/mvnref-book/reference/resource-filtering-sect-description.html

Если тест и webapp находятся в разных проектах Maven, вы можете поместить это свойство в settings.xml, который находится в вашей папке репозитория maven (C: \ Documents and Settings \ username.m2) в Windows. Вам все равно придется использовать фильтрацию или какой-либо другой метод, чтобы прочитать свойство в вашем тесте и webapp.

Давайте будем гением компьютера.