2012-01-23 32 views
16

Cố gắng đặt cấu hình kiểu tùy chỉnh trong maven pom theo guidelines on the apache site không hoạt động trong trường hợp rất đơn giản.Maven Checkstyle configLocation bị bỏ qua?

Tôi tạo ra một dự án, MyProject, sử dụng bố trí thư mục khuyến cáo của Maven (tức src/main/java /, src/main/nguồn lực), một tập tin MyClass.java duy nhất:

package com.myproject; 

public class MyClass { 

    public static void main(String[] args) { 
     System.out.println("This line is longer than 80 characters which returns an error in sun_checks.xml, however my_checks.xml allows for much longer lines and will not return a long line error."); 
    } 
} 

một sản phẩm nào checkstyle tập tin, my_checks.xml:

<?xml version="1.0"?> 
<!DOCTYPE module PUBLIC 
    "-//Puppy Crawl//DTD Check Configuration 1.2//EN" 
    "http://www.puppycrawl.com/dtds/configuration_1_2.dtd"> 

<module name="Checker"> 
    <property name="severity" value="warning"/> 
    <module name="TreeWalker"> 
    </module> 
</module> 

và một tập tin pom theo thông số kỹ thuật trong hướng dẫn:

<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.myproject</groupId> 
    <artifactId>A_Project</artifactId> 
    <name>A Project</name> 
    <version>1.0.0</version> 

    <reporting> 
    <plugins> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-checkstyle-plugin</artifactId> 
     <version>2.8</version> 
     <configuration> 
      <configLocation>my_checks.xml</configLocation> 
     </configuration> 
     </plugin> 
    </plugins> 
    </reporting> 
</project> 

Chạy 'mvn -X checkstyle: checkstyle' đang sử dụng sun_checks.xml (mặc định) thay vì sử dụng cấu hình trong tệp my_checks.xml, có thể thấy bằng cả hai lỗi kiểu kết quả kiểm tra và đầu ra gỡ lỗi (ví dụ: '[DEBUG] request.getConfigLocation() config/sun_checks.xml').

Tôi biết my_checks.xml hợp lệ vì checkstyle.config.location có thể được thay đổi trong thuộc tính sử dụng chiến lược được Carboni nêu trong , nhưng điều này gây ra sự cố khi di chuyển sang các dự án nhiều mô-đun và khác với hướng dẫn checkstyle apache maven 'chính thức'.

+0

Xml cấu hình của bạn nằm ở đâu? – Corubba

Trả lời

10

này làm việc cho tôi khi:

  1. tôi đặt my_checks.xml ở cấp độ gốc (song song với pom.xml), và
  2. Bó plugin trong các yếu tố <build> (như trái ngược với <reporting>)

Với những thay đổi đó, tôi thấy như sau:

[DEBUG] Configuring mojo 'org.apache.maven.plugins:maven-checkstyle-plugin:2.8:checkstyle' with basic configurator --> 
[DEBUG] (f) cacheFile = /home/dave/tech/lang/java/web/struts/playground/so/s231_01/target/checkstyle-cachefile 
[DEBUG] (f) configLocation = my_checks.xml 
... etc ... 
[DEBUG] request.getConfigLocation() my_checks.xml 
[DEBUG] The resource 'my_checks.xml' was not found with resourceLoader 
... etc ... 
[DEBUG] The resource 'my_checks.xml' was not found with resourceLoader org.codehaus.plexus.resource.loader.URLResourceLoader. 
[DEBUG] The resource 'my_checks.xml' was not found with resourceLoader org.codehaus.plexus.resource.loader.JarResourceLoader. 
[DEBUG] The resource 'my_checks.xml' was found as /home/dave/tech/lang/java/web/struts/playground/so/s231_01/my_checks.xml. 

Vui lòng tham khảo các usage documentation, cụ thể:

Để đặc biệt cấu hình Checkstyle Plugin, bạn cần đến thêm nó vào phần <build> của pom.xml của bạn như thể hiện trong các mẫu dưới đây.

Sử dụng <reporting> là dành cho mvn site.

+2

Cảm ơn Dave Newton! Sử dụng thay vì là vấn đề. Sẽ rất hữu ích nếu hướng dẫn Maven Checkstyle đã đưa ra các ví dụ kiểm tra thay vì các ví dụ về trang web. – HeavyE

+0

@ HeavyE Không có vấn đề gì :) Về mặt kỹ thuật, và [tài liệu mục tiêu] (http://maven.apache.org/plugins/maven-checkstyle-plugin/plugin-info.html) phân biệt giữa mục tiêu plugin và báo cáo , nhưng nó hơi mờ nếu bạn không khá thoải mái với thuật ngữ (như nhiều tài liệu Maven;) –

+1

Nếu bạn đang sử dụng Maven 3, hãy xem https://cwiki.apache.org/MAVEN/maven-3x-compatibility Cấu hình plugin -notes.html # Maven3.xCompatibilityNotes-SiteandReporting "trong phần không còn ảnh hưởng đến các plugin trong phần của POM." Đối với Maven 2, bạn có thể cần lặp lại các bit giữa báo cáo và xây dựng. – Bae

22

Vâng tôi đã tìm thấy các nguyên tắc trên trang web apache lỗi thời. Thông qua việc rà soát internet và tháo dỡ các bit cùng nhau, tôi đã cố gắng làm việc này.

Di chuyển đến thẻ <build> đã hoạt động trong một thời gian nhưng khi được cập nhật lên kiểu kiểm tra mới nhất, nó sẽ bị bỏ qua lần nữa.Tôi đã tìm thấy tôi đã phải thiết lập một tài sản:

<project ...> 

.... 

    <properties> 
    <checkstyle.config.location>properties/checkstyle-configuration.xml</checkstyle.config.location> 
    </properties> 

    <build> 
    ... 

     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-checkstyle-plugin</artifactId> 
     <version>2.9.1</version> 
     </plugin> 
    </plugins> 
    </build> 

    ... 

</project> 

Đây là một phần của các ví dụ của tôi về cách tạo séc checkstyle tùy chỉnh của riêng bạn tìm thấy ở đây:
http://blog.blundellapps.com/create-your-own-checkstyle-check/

và lấy từ mã nguồn ở đây :
https://github.com/blundell/CreateYourOwnCheckStyleCheck

+1

Thx! điều này làm việc cho các thuộc tính cấu hình khác là tốt: '' Lưu ý: Tôi phải thêm tệp: vào vị trí – IDKFA

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