Укажите системное свойство для проекта Maven
есть ли способ (я имею в виду, как я ) установить системное свойство в проекте maven?
Я хочу получить доступ к свойству из моего теста и моего веб-приложения ( работает локально), и я знаю, что могу использовать системное свойство java.
Я должен положить это ./настроить.xml или что-то в этом роде?
контекст
Я взял проект с открытым исходным кодом и сумел изменить конфигурацию БД, чтобы использовать JavaDB
теперь, в url jdbc для JavaDB, расположение базы данных может быть указано как полный путь ( см.:это другой вопрос)
или системное свойство: derby.system.home
у меня код уже работает, но в настоящее время все это жестко закодировано:
jdbc:derby:/Users/oscarreyes/javadbs/mydb
и я хочу, чтобы удалить полный путь, чтобы оставить его как:
jdbc:derby:mydb
для этого мне нужно указать системное свойство ( derby.system.home) для maven, но я не знаю, как.
теста выполняется с помощью junit (я не вижу никакого плагина в pom.xml)и веб-приложение работает с плагином jetty.
указание системного свойства в командной строке, похоже, работает для jetty, но я не уверен, что это что-то практичное ( при условии, что некоторые другие пользователи могут запускать его из eclipse/idea/ whatever )
4 ответов:
есть ли способ (я имею в виду, как я ) установить системное свойство в проекте maven? Я хочу получить доступ к свойству из моего теста [...]
вы можете установить системные свойства в Плагин Maven Surefire конфигурация (это имеет смысл, так как тесты разветвляются по умолчанию). От Использование Свойств Системы:
<project> [...] <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.5</version> <configuration> <systemPropertyVariables> <propertyName>propertyValue</propertyName> <buildDirectory>${project.build.directory}</buildDirectory> [...] </systemPropertyVariables> </configuration> </plugin> </plugins> </build> [...] </project>и мой webapp (работает локально)
не уверен, что вы имеете в виду здесь, но я предположим, контейнер веб-приложение запускается с помощью Maven. Вы можете передать системные свойства в командной строке с помощью:
mvn -DargLine="-DpropertyName=propertyValue"обновление: Ок, теперь понял. Для Jetty вы также можете установить системные свойства в конфигурации плагина Maven Jetty. От Настройка Свойств Системы:
<project> ... <plugins> ... <plugin> <groupId>org.mortbay.jetty</groupId> <artifactId>maven-jetty-plugin</artifactId> <configuration> ... <systemProperties> <systemProperty> <name>propertyName</name> <value>propertyValue</value> </systemProperty> ... </systemProperties> </configuration> </plugin> </plugins> </project>
свойства-maven-плагин плагин может помочь:
<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>properties-maven-plugin</artifactId> <version>1.0.0</version> <executions> <execution> <goals> <goal>set-system-properties</goal> </goals> <configuration> <properties> <property> <name>my.property.name</name> <value>my.property.value</value> </property> </properties> </configuration> </execution> </executions> </plugin>
я узнал, что это также можно сделать с помощью плагина exec-maven, если вы делаете "автономное" приложение java.
<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>${maven.exec.plugin.version}</version> <executions> <execution> <goals> <goal>java</goal> </goals> </execution> </executions> <configuration> <mainClass>${exec.main-class}</mainClass> <systemProperties> <systemProperty> <key>myproperty</key> <value>myvalue</value> </systemProperty> </systemProperties> </configuration> </plugin>
Если ваш тест и веб-приложение находятся в одном проекте Maven, вы можете использовать свойство в проекте POM. Затем вы можете фильтровать определенные файлы, которые позволят Maven установить свойство в этих файлах. Существуют различные способы фильтрации, но наиболее распространенным является во время фазы ресурсов - http://books.sonatype.com/mvnref-book/reference/resource-filtering-sect-description.html
Если тест и веб-приложение находятся в разных проектах Maven, вы можете поместить свойство в настройки.xml, который находится в папке репозитория maven (C:\Documents и настройки\имя пользователя.м2) на окнах. Вам все равно нужно будет использовать фильтрацию или какой-либо другой метод для чтения свойства в тесте и веб-приложении.
Comments