2012-12-20 13 views
7

Desidero controllare Maven se i dati di autenticazione dal file di proprietà sono forniti dallo sviluppatore durante il test dell'applicazione se il test di integrazione - è attivo.Verificare la durata del ciclo di vita e l'esistenza di file in Maven e segnalare l'errore

Come prassi comune dello stato, è errato eseguire il commit dei dati di autenticazione nella struttura dei sorgenti. Approccio standard di Maven descritto allo settings such as username and password should not be distributed along with the pom.xml.

Ma non mi piace questo approccio (che voglio per le impostazioni di checkout, non per dev-host !!) e voglio fornire src/testo/risorse/auth.properties.example in VCS (SVN/GIT/HG) come esempio e voglio fare il codice che controlla in Maven per esistenza di src/text/resources/auth.properties che è proprio per sviluppatore (o mai per checkout del progetto !!) ma solo se integration-test è stata chiamata la fase (o qualsiasi altra dopo la fase di test di integrazione ). Se eseguite tutte le fasi precedenti (come compilare o test) - questo controllo deve essere disabilitato.

Maven convalidare fase progettata per verificare la coerenza di creazione (fare riferimento a introduction-to-the-lifecycle). Ma non ci sono controlli per fasi !! Quindi io uso la fase pre-integrazione-test.

scrivo il codice di lavoro:

 
<?xml version="1.0" encoding="utf-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>com.mycompany.app</groupId> 
    <artifactId>my-app</artifactId> 
    <packaging>jar</packaging> 
    <version>1.0</version> 
    <name>my-app</name> 

    <profiles> 

    <profile> 
     <id>existent.properties</id> 
     <activation> 
     <file> 
      <missing>auth.properties</missing> 
     </file> 
     </activation> 
     <build> 
     <plugins> 
      <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-antrun-plugin</artifactId> 
      <version>1.6</version> 
      <executions> 
       <execution> 
       <phase>pre-integration-test</phase> 
       <goals> 
        <goal>run</goal> 
       </goals> 
       <configuration> 
        <target> 
        <echo>In order to run integration-text life-cycle:</echo> 
        <echo> 1) Rename 'auth.properties.example' into 'auth.properties'.</echo> 
        <echo> 2) Fill 'auth.properties' with your own authentification data.</echo> 
        <fail message="Can't find 'auth.properties'."/> 
        </target> 
       </configuration> 
       </execution> 
      </executions> 
      </plugin> 
     </plugins> 
     </build> 
    </profile> 

    </profiles> 

    <build> 

    <plugins> 

     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-antrun-plugin</artifactId> 
     <version>1.6</version> 
     <executions> 

      <execution> 
      <id>test</id> 
      <phase>test</phase> 
      <goals> 
       <goal>run</goal> 
      </goals> 
      <configuration> 
       <target> 
       <echo>JUnit tests!</echo> 
       </target> 
      </configuration> 
      </execution> 

      <execution> 
      <id>integration-test</id> 
      <phase>integration-test</phase> 
      <goals> 
       <goal>run</goal> 
      </goals> 
      <configuration> 
       <target> 
       <echo>Selenium tests!</echo> 
       </target> 
      </configuration> 
      </execution> 

     </executions> 
     </plugin> 

    </plugins> 

    </build> 

</project> 

Ma, come GNU Make guru non mi piace al di sopra del codice. Ho ragione? È sbagliato l'uso di Maven?

risposta

Problemi correlati