2013-07-16 2 views
7

Активируют в родительской поддержке pom.xml Spring с использованиемАктивация профиля когда файлы существуют с использованием шаблонов

<activation> 
    <file> 
     <exists>src/main/resources/*beans.xml</exists> 
    </file> 
</activation> 

Это прекрасно работает.

При попытке активировать CucumberJVM материал в профиле с помощью

<activation> 
    <file> 
     <exists>src/test/resources/**/*.feature</exists> 
    </file> 
</activation> 

Однако это отказывается работать. Поэтому я предполагаю, что в этом контексте игнорируется подстановочный знак **.

Это нормально, есть ли обходной путь, чтобы активировать этот профиль, когда есть .feature файлов?

ответ

6

Я действительно удивлен, что работает *beans.xml.

Насколько я могу судить, подстановочные знаки не поддерживаются в активации файлов. Исходный код, который вычисляет активацию профиля на основе <file>, можно найти в FileProfileActivator. Основная логика выглядит следующим образом:

String path = //<file><exists> ... 

RegexBasedInterpolator interpolator = new RegexBasedInterpolator(); 
interpolator.addValueSource(/* ${basedir} suppert */) 
interpolator.addValueSource(new MapBasedValueSource(context.getProjectProperties())); 
interpolator.addValueSource(new MapBasedValueSource(context.getUserProperties())); 
interpolator.addValueSource(new MapBasedValueSource(context.getSystemProperties())); 
path = interpolator.interpolate(path, ""); 
path = pathTranslator.alignToBaseDirectory(path, basedir); 
File f = new File(path); 
if (!f.isAbsolute()){ 
    return false; 
} 
boolean isActive = f.exists(); 

И ни interpolate(...), ни alignToBaseDirectory(...) процесс подстановочных знаков.

В качестве обходного пути вы можете попробовать gimick с <activation><property>, но для этого потребуется вызвать сборку maven с помощью скрипта оболочки.

+0

Обратите внимание, что в исходном коде 3.0.5 (https://maven.apache.org/ref/3.0.5/xref/org/apache/maven/model/profile/activation/FileProfileActivator.html), ' context.getProjectProperties() 'никогда не вызывается. – Stephan

2

В нашем проекте мы используем ниже конфигурацию, чтобы упаковать все тесты, как Jar-файлы с помощью банки-плагин:

<activation> 
     <file> 
      <exists>src/test/resources/com/companyname/platform/test/</exists> 
     </file> 
    </activation> 

Это может работать, потому что:

  • мы создаем шаблонные код с использованием архетипов
  • большинство людей только клало файлы ресурсов в корневую папку
  • активирование профиля работает в каталогах, по крайней мере, в Maven 3.0.5
Смежные вопросы