2012-12-20 9 views
7

Chcę sprawdzić w Maven, czy dane uwierzytelniające z pliku właściwości są dostarczane przez programistę podczas testowania aplikacji, jeśli wywołanie integracja-test cykl życia.Sprawdzanie istnienia cyklu i istnienia pliku w Maven i zgłaszanie błędu

Jako powszechną praktykę państwową nieprawidłowo jest przekazywać dane uwierzytelniające do drzewa źródłowego. Standardowe podejście do maven opisane w settings such as username and password should not be distributed along with the pom.xml.

Ale nie podoba mi się to podejście (Chcę za ustawieniach kasowych, nie za dev-host !!) i chcą, aby zapewnić src/Text/resources/auth.properties.example w VCS (SVN/GIT/HG) jako przykład i chcesz utworzyć kod sprawdzający w Maven pod kątem istnienia src/text/resources/auth.properties, który jest własny na programistę (lub kiedykolwiek za zamówienie w ramach projektu !!), ale tylko wtedy, gdy test integracji faza została wywołana (lub jakakolwiek inna po fazie testowania faza). Jeśli wykonywane były poprzednie fazy (jak kompilacja lub test) - te sprawdzenia muszą być wyłączone.

Maven zatwierdzić faza przeznaczona do sprawdzania konsystencji kompilacji (patrz: introduction-to-the-lifecycle). Ale nie ma żadnych kontroli faz! Tak więc używam fazy pre-integracji-testu .

piszę kod roboczy:

 
<?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> 

Ale jak GNU make guru Nie lubię powyżej kodu. Czy mam rację? Czy to niewłaściwe wykorzystanie Mavena?

Odpowiedz

Powiązane problemy