2015-07-13 17 views
13

Trong dự án java của tôi, tôi đã tạo các lớp nằm trong thư mục cùng một gói như các lớp khác. Tôi muốn định cấu hình plugin jacoco maven để loại trừ các lớp được tạo ra và chỉ sử dụng các lớp trong thư mục chính/src/java (không phải src/main/java-generated)Loại trừ thư mục trong báo cáo phủ sóng của jacoco

Cấu trúc dự án:
src/main/java/com/công ty/john/Good.java < ---- này bao gồm
src/main/java tạo/com/công ty/john/AutoGeneratedClass.java < ---- này loại trừ

<plugin> 
      <groupId>org.jacoco</groupId> 
      <artifactId>jacoco-maven-plugin</artifactId> 
      <version>0.7.5.201505241946</version> 
      <configuration> 
       <includes> 
       </includes> 
       <excludes> 
        <exclude>**/*Dto.*</exclude> 
       </excludes> 
      </configuration> 
      <executions> 
       <execution> 
        <id>default-prepare-agent</id> 
        <goals> 
         <goal>prepare-agent</goal> 
        </goals> 
       </execution> 
       <execution> 
        <id>default-report</id> 
        <phase>prepare-package</phase> 
        <goals> 
         <goal>report</goal> 
        </goals> 
       </execution> 
       <execution> 
        <id>default-check</id> 
        <goals> 
         <goal>check</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 

tôi biết rằng, 1 tùy chọn đó là gắn thêm tiền tố vào lớp được tạo ra, fi _ và sử dụng điều này để lọc, nhưng tôi tự hỏi nếu có một tùy chọn khác. Làm thế nào để xác định thư mục dự án nguồn (src/main/java) và do đó loại trừ tất cả các thư mục khác? Plugin có chỉ dựa trên tên gói không?

Trả lời

9

Tôi nghĩ rằng điều đó là không thể vì các lớp được biên dịch của bạn nằm trong cùng một thư mục trong mục tiêu. Và Jacoco cần các lớp được biên dịch và do đó bạn không thể tạo bộ lọc trên các nguồn.

Bạn có thể loại trừ các lớp trong báo cáo Jacoco bằng cách đặt đường dẫn loại trừ nhưng giá trị phải là đường dẫn của các lớp được biên dịch liên quan đến mục tiêu/lớp/thư mục.

<plugin> 
    <groupId>org.jacoco</groupId> 
    <artifactId>jacoco-maven-plugin</artifactId> 
    <configuration> 
     <excludes> 
      <exclude>**/*.class</exclude> 
     </excludes> 
    </configuration> 
</plugin> 

Giải pháp tốt nhất là tạo các lớp trong gói cụ thể. Nhưng có lẽ bạn không thể.

+0

Cảm ơn các đập đã trả lời và để trỏ đến thư mục/lớp/thư mục – troger19

4

Chỉ cần thực hiện thao tác dưới đây đã giải quyết được vấn đề của tôi khi bỏ qua gói thay vì tệp.

<configuration> 
    <excludes> 
     <exclude>**/basepkg/subpkg1/subpkg2/*</exclude> 
    </excludes> 
</configuration> 
Các vấn đề liên quan