2009-06-19 24 views
10

Lý do: Dự án của chúng tôi đang sử dụng Ant làm giao diện dòng lệnh. Sau khi thực hiện một lắp ráp mới với plugin lắp ráp của maven, tôi muốn thực hiện các kiểm tra ban đầu để xem liệu tất cả đã được lắp ráp đúng chưa. Vì vậy, tôi cần phải bao gồm các bài kiểm tra đơn vị trong hội đồng cuối cùng. Sau khi lắp ráp, các cuộc thử nghiệm ban đầu sau đó sẽ được gọi là sth nhưLàm thế nào tôi có thể bao gồm các bài kiểm tra đơn vị trong lắp ráp maven?

> ant initTest 

build.xml:

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

Vấn đề là: tôi muốn giữ Unit tests của tôi trong src/kiểm tra/java và không di chuyển chúng sang src/main/java. Có cách nào để nói cho các plugin lắp ráp để bao gồm các bài kiểm tra đơn vị của tôi? Một đơn giản bao gồm trong mô tả lắp ráp không làm điều đó ...

Trả lời

10

Có hai bước:

  1. trọn gói các bài kiểm tra vào một cái lọ cũng như các mã chính.
  2. Phụ thuộc vào lọ "máy tính" đó trong mô-đun tạo lắp ráp.

Để đóng gói các bài kiểm tra, bạn cần phải bin mục tiêu jar:test-jar. ví dụ.

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

Sau đó, trong mô-đun lắp ráp, bạn có thể phụ thuộc vào tạo phẩm.

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

Bit chính là "trình phân loại".

+2

phụ thuộc có lẽ cũng nên có phạm vi "kiểm tra" –

2

Câu trả lời từ @ Dominic-Mitchell không có tác dụng gì với tôi cả. Những gì cuối cùng đã làm việc được thêm một fileSet cho các lớp học thử nghiệm để xml lắp ráp của tôi. Lưu ý rằng các thư mục tập tin khác nhau! Điều đó làm tôi bối rối trong thời gian dài nhất.

Sử dụng ${project.build.directory} cho các lớp học thử nghiệm và ${project.build.outputDirectory} cho chính:

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

tín dụng mà tín dụng là do - Tôi tìm thấy giải pháp này trong bài viết trên blog này ở đây: http://alexgaddie.blogspot.com/2010/02/creating-uber-jar-with-maven.html
Tôi không cần profile một phần của bài đăng trên blog.

1

Các công trình sau đây dành cho chúng tôi.

pom.xml đoạn:

<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 đoạn:

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

Điều quan trọng là thẻ useProjectAttachments.

Các vấn đề liên quan