2009-06-19 7 views
10

Powód: nasz projekt korzysta z interfejsu wiersza polecenia jako. Po zrobieniu nowego zestawu z wtyczką zestawu maven'a, chcę wykonać wstępne testy, aby zobaczyć, czy wszystko zostało poprawnie zmontowane. Dlatego muszę dołączyć testy jednostkowe do końcowego montażu. Po zamontowaniu, wstępne testy byłyby wówczas nazywane sth jakJak mogę uwzględnić testy jednostkowe w zespole maven?

> ant initTest 

build.xml:

<target="initTest"> 
    <junit> 
    <test class="MyTest" /> 
    </junit> 
</target> 

Problem: chcę, aby moje testów jednostkowych w src/test/java i nie przenieś je do src/main/java. Czy istnieje sposób, aby poinformować wtyczkę zespołu o moich testach jednostkowych? Prosty obejmują w deskryptorze montażowej nie zrobić ...

Odpowiedz

10

Istnieją dwa etapy:

  1. pakiecie testy do słoika, a także główny kod.
  2. W zależności od tego "-test" słoika w module, który tworzy zestaw.

Aby spakować testy, należy odrzucić cel jar:test-jar. na przykład

<build> 
    <plugins> 
    <plugin> 
     <artifactId>maven-jar-plugin</artifactId> 
     <executions> 
     <execution> 
      <id>test-jar</id> 
      <phase>package</phase> 
      <goals> 
      <goal>test-jar</goal> 
      </goals> 
     </execution> 
     </executions> 
    </plugin> 
    </plugins> 
</build> 

Następnie w module złożenia można polegać na wynikowym artefakcie.

<dependencies> 
    <dependency> 
    <groupid>${project.groupId}</groupId> 
    <artifactId>some-artifact</artifactId> 
    <version>${project.version}</version> 
    <classifier>tests</classifier> 
    </dependency> 
</dependencies> 

Kluczowym bitem jest "klasyfikator".

+2

zależność powinna prawdopodobnie mieć także zakres "test" –

2

Odpowiedź od @ Dominika-Mitchella nie zadziałała dla mnie w ogóle. Ostatecznie zadziałało dodanie klasy fileSet do moich xmlów zespołu. Należy pamiętać, że katalogi fileSet są różne! To mnie dopadło najdłużej.

Zastosowanie ${project.build.directory} dla klas testowych i ${project.build.outputDirectory} za główny:

<?xml version='1.0' encoding='UTF-8'?> 
<assembly> 
    <id>toolbar-test</id> 
    <formats> 
     <format>jar</format> 
    </formats> 

    <includeBaseDirectory>false</includeBaseDirectory> 

    <fileSets> 
     <fileSet> 
      <directory>${project.build.directory}/test-classes</directory> 
      <outputDirectory>/</outputDirectory> 
     </fileSet> 
     <fileSet> 
      <directory>${project.build.outputDirectory}</directory> 
      <outputDirectory>/</outputDirectory> 
     </fileSet> 
    </fileSets> 

    <dependencySets> 
     <dependencySet> 
      <scope>runtime</scope> 
      <unpack>true</unpack> 
      <unpackOptions> 
       <excludes> 
        <exclude>**/LICENSE*</exclude> 
        <exclude>**/README*</exclude> 
       </excludes> 
      </unpackOptions> 
     </dependencySet> 
     <dependencySet> 
      <scope>test</scope> 
      <unpack>true</unpack> 
     </dependencySet> 
    </dependencySets> 
</assembly> 

kredytowych w przypadku gdy kredyt jest spowodowane - Uważam, że to rozwiązanie w tym blogu tutaj: http://alexgaddie.blogspot.com/2010/02/creating-uber-jar-with-maven.html
nie muszę się profile część post na blogu.

1

Następujące prace dla nas.

pom.xml urywek:

<build> 
    <plugins> 

     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-jar-plugin</artifactId> 
      <version>2.6</version> 
      <executions> 
       <execution> 
        <goals> 
         <goal>test-jar</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin>   
    </plugins> 
</build> 

assembly.xml urywek:

<dependencySets> 
    <dependencySet> 
     <outputDirectory>/lib</outputDirectory> 
     <useProjectArtifact>true</useProjectArtifact> 
     <useProjectAttachments>true</useProjectAttachments> 
     <scope>runtime</scope> 
    </dependencySet> 
</dependencySets> 

Kluczem jest znacznik useProjectAttachments.