Укажите системное свойство к проекту Знатока

Существует ли путь (я имею в виду, как делают I), устанавливает системное свойство в проекте знатока?

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

Я должен поместить это в ./settings.xml или что-то как этот?

Контекст

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

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

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

У меня есть код уже, работающий, но в настоящее время это - весь hardcoded к:

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

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

 jdbc:derby:mydb

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

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

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

63
задан Community 23 May 2017 в 12:02
поделиться

2 ответа

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

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

<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 (запущенный локально)

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

mvn -DargLine="-DpropertyName=propertyValue"

Update: Хорошо, теперь понял. Для Jetty вы также должны иметь возможность установить системные свойства в конфигурации Maven Jetty Plugin. Из Установка системных свойств:

<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>
70
ответ дан 24 November 2019 в 16:13
поделиться

Если ваш тест и 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.

2
ответ дан 24 November 2019 в 16:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: