2013-07-16 8 views
7

posso attivare in un genitore sostegno pom.xml primavera utilizzandoAttivazione di un profilo quando i file esiste utilizzando caratteri jolly

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

Questo funziona bene.

Quando provo ad attivare la roba CucumberJVM in un profilo utilizzando

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

Tuttavia, questo si rifiuta di lavorare. Quindi immagino che il carattere jolly ** venga ignorato in questo contesto.

È normale, esiste una soluzione alternativa per attivare questo profilo quando sono presenti i file .feature?

risposta

6

Sono davvero sorpreso che il *beans.xml funzioni.

Per quanto posso vedere, i caratteri jolly non sono supportati nell'attivazione del file. Il codice sorgente che calcola l'attivazione del profilo in base a <file> può essere trovato in FileProfileActivator. Logica di nucleo così:

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

e né interpolate(...)alignToBaseDirectory(...) jolly di processo.

Come soluzione temporanea, è possibile provare qualche aggancio con <activation><property>, ma ciò richiederebbe la chiamata alla generazione di maven con uno script di shell.

+0

Si noti che nel codice sorgente 3.0.5 (https://maven.apache.org/ref/3.0.5/xref/org/apache/maven/model/profile/activation/FileProfileActivator.html), ' context.getProjectProperties() 'non viene mai chiamato. – Stephan

2

Nel nostro progetto, usiamo la configurazione qui sotto per confezionare tutti i test come jar-file utilizzando il vaso-plugin:

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

Questo è in grado di lavorare a causa:

  • creiamo boilerplate codice utilizzando archetipi
  • la maggior parte delle persone inserisce solo i file di risorse nella cartella radice
  • l'attivazione del profilo funziona su directory, almeno in Maven 3.0.5
Problemi correlati