2016-09-16 3 views
1

У меня есть wildfly pluging с этим свойствам к внешним настроить имя хоста, пользователя и т.д.Получить Maven свойства из внешнего файла конфигурации

<plugin> 
    <groupId>org.wildfly.plugins</groupId> 
    <artifactId>wildfly-maven-plugin</artifactId> 
    <version>1.0.0.Final</version> 
    <configuration> 
     <hostname>${wildfly.hostname}</hostname> 
     <port>${wildfly.port}</port> 
     <username>${wildfly.username}</username> 
     <password>${wildfly.password}</password> 
    </configuration> 
    <executions> 
     <execution> 
      <!-- <phase>package</phase> --> 
      <!-- <goals> --> 
      <!-- <goal>deploy</goal> --> 
      <!-- </goals> --> 
     </execution> 
    </executions> 
</plugin> 

Затем я создал файл со свойствами (file.properties)

wildfly.hostname=127.0.0.1 
wildfly.port=19990 
wildfly.username=user 
wildfly.password=pass 

И я хочу, чтобы при вызове mvn wildfly:deploy переменные были взяты из файла. Я попробовал несколько способов:

  1. Использование <properties> и он работает, но он находится внутри pom.xml
  2. Использование properties-maven-plugin для загрузки внешнего файла с помощью <phase>pre-clean</phase>, но он не работает.

Проблема здесь в том, что в конце концов, я хотел бы создать папку конфигурации с различными профилями, то есть разные пользователи, проходят и т.д.

Любая идея о том, как сделать это?

+0

Почему вы используете ' pre-clean'? Использовать ' initialize' – Tunaki

+0

Я также использовал его, и он не работает – jlanza

+0

Да, вам нужно вызвать 'mvn initialize wildfly: deploy', иначе фаза не будет запущена. Будет вызываться только выполнение 'wildfly: deploy'. – Tunaki

ответ

3

Не связывайте properties-maven-plugin с фазой pre-clean. Было бы уместнее связать его с фазой initialize. От lifecycle reference:

initialize: инициализировать состояние сборки, например. устанавливать свойства или создавать каталоги.

Проблема, однако, заключается в том, что эта фаза не будет выполняться при непосредственном вызове mvn wildfly:deploy. Делая это, вы говорите Maven, чтобы выполнить только выполнение wildfly-maven-plugin. Таким образом, он не будет выполнять какие-либо из встроенных фаз стандартного или чистого жизненного цикла.

В вашем случае вам действительно нужны те свойства, которые нужно настроить, поэтому вам нужно выполнить фазу initialize. Для этого вы можете использовать mvn initialize wildfly:deploy. Преимущество использования initialize заключается в том, что остальные фазы жизненного цикла по умолчанию не будут выполняться, поэтому он будет таким же быстрым, как и раньше.

В Maven <filters> имеют разные цели: они используются для изменения содержимого ресурсов путем замены в них заполнителей определенными значениями, которые могут быть получены из файла свойств. Так что <filters> не предназначены для этого прецедента, и properties-maven-plugin идеально подходит для этого.

+0

Coudl, пожалуйста, укажите пример того, как мне настроить материал для использования свойств в файле persistence.xml? Должен ли я включать фильтрацию? И запустить mvn, каковы варианты? – jlanza

+0

@jlanza 'persistence.xml' - ресурс проекта, поэтому для этого вам потребуется фильтрация. Вы можете посмотреть https://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html, чтобы увидеть пример фильтрации. – Tunaki