2013-07-16 17 views
7

aktywować w macierzystej pom.xml wiosennym wsparcia użyciuAktywacja profilu, gdy pliki istnieje przy użyciu symboli wieloznacznych

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

To działa prawidłowo.

Kiedy próbuję włączyć rzeczy CucumberJVM w profilu przy

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

jednak ten odmawia pracy. Domyślam się, że w tym kontekście wieloznacznik ** jest ignorowany.

Czy to normalne, czy istnieje obejście umożliwiające włączenie tego profilu, gdy są obecne pliki .feature?

Odpowiedz

6

Jestem rzeczywiście zaskoczony, że działa *beans.xml.

O ile widzę, znaki nie są obsługiwane przy aktywacji pliku. Kod źródłowy, który oblicza aktywację profilu na podstawie <file>, można znaleźć w FileProfileActivator. Logika rdzeń idzie tak:

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(); 

i ani interpolate(...) ani alignToBaseDirectory(...) kwantyfikatorów procesowych.

Aby obejść ten problem, wypróbuj program gimick z numerem <activation><property>, ale wymagałoby to wywołania komendy maven ze skryptem powłoki.

+0

Należy pamiętać, że w kodzie źródłowym 3.0.5 (https://maven.apache.org/ref/3.0.5/xref/org/apache/maven/model/profile/activation/FileProfileActivator.html), context.getProjectProperties() 'nigdy nie jest wywoływana. – Stephan

2

W naszym projekcie używamy poniższej konfiguracji, aby zapakować wszystkie testy jak słoik plików przy użyciu Jar-plugin:

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

ten jest w stanie pracować z powodu:

  • tworzymy boilerplate kod przy użyciu archetypów
  • większość osób umieszcza pliki zasobów tylko w katalogu głównym
  • aktywacja profilu działa na katalogach, przynajmniej w Maven 3.0.5