Укажите системное свойство для проекта Maven
Есть ли способ (я имею в виду, как я) установить системное свойство в проекте maven?
Я хочу получить доступ к свойству из моего теста и моего webapp (работает локально), и я знаю, что могу использовать свойство java-системы.
Должен ли я помещать это в ./settings.xml или что-то в этом роде?
- Maven: Должен ли я хранить или удалять объявленные зависимости, которые также являются транзитными зависимостями?
- Использовать публичный repository maven с плющом
- Имея стороннюю банку, включенную в затененную банку Maven, не добавляя ее в локальный repository
- Как исключить модуль из сборки реактора Maven?
- Укажите JDK для Maven для использования
контекст
Я взял проект с открытым исходным кодом и смог изменить конфигурацию 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 - как я могу добавить произвольную запись в classpath в банку?
- Как получить версию проекта Maven в командной строке bash
- Как создать новый тип упаковки для Maven?
- Извлечь версию из maven pom.xml в код
- Разделить тестовые ресурсы между maven-проектами
- Maven родительский pom vs modules pom
- Рекомендации по копированию файлов с Maven
- Maven: Как изменить путь к целевому каталогу из командной строки?
Есть ли способ (я имею в виду, как я) установить системное свойство в проекте 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.