Mapeamento de serviços

Na elaboração de cenários de teste, o usuário do sistema precisa de uma documentação de referência para consultar a lista de serviços existentes e as informações necessárias para a execução de cada serviço. Como a criação e alteração de serviços é bastante comum, a documentação precisa ser constantemente atualizada. Tendo em vista o caráter dinâmico dos serviços, foi desenvolvido um plug-in para Maven chamado Maven Service Info Plugin.

Maven Service Info Plugin

  • O plug-in, desenvolvido pela MAPS, lista todos os serviços de um dado projeto onde ele foi configurado.
../../_images/Service-info-004.png
  • A saída gerada pelo plug-in é um arquivo em html que lista todos os serviços encontrados, seus atributos, os tipos desses atributos e sua obrigatoriedade.
../../_images/Service-info-001.png

Configuração

  • No pom.xml do seu projeto, configure o plugin:

A versão utilizada neste guia é a 1.0.6

<plugins>
        <plugin>
                <groupId>jmine.plugins</groupId>
                <artifactId>maven-service-info-plugin</artifactId>
                <version>1.0.6</version>
        </plugin>
</plugins>
  • Em um terminal, acesse o diretório do seu projeto, onde se encontra o pom.xml configurado, e rode o comando mvn service-info:extract.
  • A saída será gerada no diretório target do projeto.

Dependency plugin opcional

Uma forma de listar todos os services que são enxergados por um projeto, e não apenas aqueles contidos nele, é usar o dependency plugin do Maven. Podemos usar este plugin para extrair todos os .class das dependências de um dado projeto e colocá-las em seu diretório target.

  • Configurando o plugin no pom.xml - Geração do relatório no formato HTML
<profile>
        <id>service-info</id>
        <build>
                <defaultGoal>dependency:unpack-dependencies</defaultGoal>
                <plugins>
                        <plugin>
                                <groupId>org.apache.maven.plugins</groupId>
                                <artifactId>maven-dependency-plugin</artifactId>
                                <executions>
                                        <execution>
                                                <id>unpack-dependencies</id>
                                                <phase>generate-resources</phase>
                                                <goals>
                                                        <goal>unpack-dependencies</goal>
                                                </goals>
                                                <configuration>
                                                        <includes>**/*.class</includes>
                                                        <outputDirectory>${project.build.directory}</outputDirectory>
                                                        <overWriteReleases>true</overWriteReleases>
                                                        <overWriteSnapshots>true</overWriteSnapshots>
                                                </configuration>
                                        </execution>
                                </executions>
                        </plugin>
                </plugins>
        </build>
</profile>
  • Configurando o plugin no pom.xml - Geração do relatório no formato PDF
<profile>
         <id>service-info</id>
         <build>
             <plugins>
                 <plugin>
                     <groupId>org.apache.maven.plugins</groupId>
                     <artifactId>maven-dependency-plugin</artifactId>
                     <executions>
                         <execution>
                             <id>unpack-dependencies</id>
                             <phase>generate-resources</phase>
                             <goals>
                                 <goal>unpack-dependencies</goal>
                             </goals>
                             <configuration>
                                 <includes>**/*.class</includes>
                                 <includeGroupIds>br.com.tutorial.testes</includeGroupIds>
                                 <excludeTypes>db</excludeTypes>
                                 <outputDirectory>${project.build.directory}</outputDirectory>
                                 <overWriteReleases>true</overWriteReleases>
                                 <overWriteSnapshots>true</overWriteSnapshots>
                             </configuration>
                         </execution>
                     </executions>
                 </plugin>
                 <plugin>
                     <groupId>org.apache.maven.plugins</groupId>
                     <artifactId>maven-surefire-plugin</artifactId>
                     <configuration>
                         <skip>true</skip>
                     </configuration>
                 </plugin>
                 <plugin>
                     <groupId>jmine.plugins</groupId>
                     <artifactId>maven-service-info-plugin</artifactId>
                     <version>1.0.6</version>
                     <executions>
                         <execution>
                             <id>generate-services-metadata</id>
                             <phase>prepare-package</phase>
                             <goals>
                                 <goal>extract</goal>
                             </goals>
                             <configuration>
                                 <templateName>pdf_template</templateName>
                                 <outputFile>${project.build.directory}/site</outputFile>
                             </configuration>
                         </execution>
                     </executions>
                 </plugin>
                 <plugin>
                     <groupId>org.apache.maven.plugins</groupId>
                     <artifactId>maven-pdf-plugin</artifactId>
                     <version>1.2</version>
                     <executions>
                         <execution>
                             <id>generate-services-pdf</id>
                             <phase>prepare-package</phase>
                             <goals>
                                 <goal>pdf</goal>
                             </goals>
                             <configuration>
                                 <siteDirectory>${project.build.directory}/site</siteDirectory>
                                 <docDescriptor>${project.build.directory}/site/pdf.xml</docDescriptor>
                                 <includeReports>false</includeReports>
                             </configuration>
                         </execution>
                     </executions>
                 </plugin>
             </plugins>
         </build>
</profile>
  • No terminal, acesse o diretório do projeto onde o pom.xml foi configurado e execute o comando:
mvn clean install -Pservice-info

Todos os .class das dependências do projeto serão copiados para o seu diretório target.