2009-05-14 2 views
3

Я пытаюсь создать приложение, начинающееся с Archetype Appfuse, но у меня возникают некоторые странные проблемы. На этот раз я бы хотел использовать hsqldb для автоматических модульных тестов и тестов интеграции и mysql db для моего ручного тестирования, чтобы я мог легко манипулировать данными, когда мне это нужно, поэтому было бы неплохо автоматически переключать профили во время фазы тестирования. Есть ли способ сделать это?Используйте альтернативный профиль Maven во время фазы тестирования

ответ

7

Я не уверен, что это именно то, о чем вы просите, но вы можете сделать следующее, чтобы настроить несколько фильтров для вашего проекта Maven.

<filters> 
    <filter>/your/path/filter-${env}.properties</filter> 
</filters> 

Таким образом, вы можете настроить несколько профилей с помощью:

<profiles> 
    <profile> 
    <id>local</id> 
    <properties> 
     <env>local</env> 
    </properties> 
    </profile> 
    <profile> 
    <id>test</id> 
    <properties> 
     <env>test</env> 
    </properties> 
    </profile> 
</profiles> 

Вы можете запустить сборку с соответствующим файлом свойств с помощью:

mvn -P <profile id> 

Это потребует, имеющих файлы свойств, расположенных по адресу:

/your/path/filter-local.properties 
/your/path/filter-test.properties 
+0

Хотя это, безусловно, хороший способ переключить файлы свойств с выполнения maven на выполнение maven. Я надеялся на что-то более зернистое. Я хочу просто выполнить mvn clean jetty: запустите или аналогичные, а затем ресурсы будут заполнены заполнителями, которые поступают из тестового профиля, а затем, как только тесты пройдут, я хотел бы автоматически переключиться на другой профиль, который затем будет использоваться для замены заполнителей и последующего запуска сервера причала. В основном я хочу запустить модульные тесты в другой конфигурации базы данных :-) – cdecker

+0

Я вижу - так вы хотите использовать разные профили для разных фаз жизненного цикла Maven? Я не уверен, что это возможно, но мы увидим, если кто-нибудь еще ответит. –

+0

Вы не можете использовать разные профили для разных фаз одного и того же запуска. Я столкнулся с этой проблемой с 2,0,3 дня. Я обойду это с mvn -PlocalTest чистым пакетом, mvn -PfullBuild чистым развертыванием пакета. – sal

2

Не уверен, что это может помочь вам вообще, но вы можете указать альтернативные файлы ресурсов в папке/src/test/resources, которые переопределяют те, что находятся в/src/main/resources при запуске тестов.

Здесь я определяю альтернативный файл placeholders.properties, чтобы указать другое соединение db, которое будет использоваться на этапе тестирования.

Смежные вопросы