2010-02-17 27 views
7

Tôi đang sử dụng plugin kiểu trong maven 2. Bây giờ tôi muốn chuyển tệp cấu hình của mình, từ tệp mặc định sang a) tệp trực tuyến hoặc b) tệp cục bộ. Tôi đã thử hai thứ sau, cả hai đều không hoạt động. Bất kỳ đề xuất?Maven 2 checkstyle plugin phiên bản 2.5 - Vấn đề với configLocation

A) tập tin địa phương, đó là trực tiếp trong thư mục dự án của tôi bên cạnh pom.xml

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-checkstyle-plugin</artifactId> 
    <configuration> 
     <configLocation>checkstyle.xml</configLocation> 
    </configuration> 
</plugin> 

B) tập tin từ xa, được lưu trữ trên một máy chủ

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-checkstyle-plugin</artifactId> 
    <configuration> 
     <configLocation>http://stud.hs-heilbronn.de/~nischmid/development/checkstyle-config.xml</configLocation> 
    </configuration> 
</plugin> 

Cả hai trường hợp kết quả trong một lỗi như sau:

[INFO] An error has occurred in Checkstyle report generation. Embedded error: Failed during checkstyle execution Could not find resource 'file:checkstyle.xml'.

Mọi trợ giúp sẽ được đánh giá cao!

Trả lời

6

Tôi đã nhìn thấy một số vấn đề liên quan đến configLocation trong Jira với phiên bản 2.5 của các plugin (như MCHECKSTYLE-129 hoặc MCHECKSTYLE-131), cả hai a) và b) chỉ hoạt động tốt với các phiên bản 2.4.

Vì vậy, trừ khi bạn đang sử dụng Maven 3, tôi đề nghị để rollback đến 2.4 cho bây giờ:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-checkstyle-plugin</artifactId> 
    <version>2.4</version> 
    <configuration> 
    <configLocation>checkstyle.xml</configLocation> 
    </configuration> 
</plugins> 

hoặc

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-checkstyle-plugin</artifactId> 
    <version>2.4</version> 
    <configuration> 
    <configLocation>http://stud.hs-heilbronn.de/~nischmid/development/checkstyle-config.xml</configLocation> 
    </configuration> 
</plugin> 

Như một mặt lưu ý, đối với một đa module xây dựng, hãy xem số Multimodule Configuration.

+0

Swithing trở lại phiên bản 2.4 đã giải quyết được vấn đề a), tuy nhiên vấn đề b) chống lại. Tôi làm theo các hướng dẫn được đưa ra trong MCHECKSTYLE-129 mà giải quyết vấn đề b). Vì vậy, tôi có phiên bản plugin checkstyle 2.5 với tài nguyên plexus 1.0-alpha-7-SNAPSHOT và mọi thứ đều hoạt động tốt. Cảm ơn Pascal! –

+0

@Nils Weird, tôi đã thử nghiệm b) với URL của bạn và nó hoạt động với tôi với 2,4. Dù sao, nếu bạn giải quyết nó bằng 2,5 bằng cách thêm phụ thuộc vào tài nguyên plexus, thì tốt thôi :) –

5

Tôi đã cố gắng sử dụng phiên bản 3.0.1 của plugin Checkstyle và thấy configLocation không có hiệu lực. Đã thử cách tiếp cận ở trên, nhưng vẫn không có may mắn.

Để tóm tắt, câu trả lời ở trên có thể không hiệu quả, nhưng bạn có thể cần đặt thuộc tính checkstyle.config.location.

Sử dụng -X để có được kết xuất debug, tôi thấy:

[DEBUG] (f) configLocation = config/sun_checks.xml 

cuộn tiếp tục trở lại trong nhật ký, nó trông giống như configLocation không được thiết lập:

<configLocation default-value="config/sun_checks.xml">${checkstyle.config.location}</configLocation> 

Dựa trên thông điệp rằng, Tôi đặt thuộc tính trong toàn cầu <properties> như sau:

<checkstyle.config.location>${basedir}/config/checkstyle-configuration.xml</checkstyle.config.location> 

Điều này đã làm việc, nhưng gây ra các plugin để ném một ngoại lệ. Sau khi một số Googling, tôi đã thêm dòng sau vào file cấu hình checkstyle:

<module name="Checker"> 
    ... 
    <module name="TreeWalker"> 
    ... 
    <property name="cacheFile" value=""/> 

Để hoàn chỉnh, bước cuối cùng đến từ Jira sau, đánh dấu là giải quyết trong 2.8. Sự khác biệt là nó có vẻ làm việc với một giá trị rỗng, tránh sự cần thiết để thiết lập một tài sản ${cachefile}:

http://jira.codehaus.org/browse/MCHECKSTYLE-159

+0

Phải đặt "file: //" ở phía trước. file: // $ {basedir} /config/checkstyle-configuration.xml

1

lẽ hữu ích cho người khác có nhu cầu để vẫn tìm cách khắc phục. Bằng cách này tôi đã có cùng một vấn đề và tập tin được giả sử để được tìm kiếm trong /classes/.xml hoặc thư mục từ đây.Nhưng kể từ khi nó được nhìn thẳng sau khi thư mục dự án tôi bao gồm

<configuration> 
<configLocation>src\main\resources\checkstyle-checker-dev.xml</configLocation> 
</configuration> 

Lưu ý: configLocation có L mũ

Ngoài ra bạn có thể định nghĩa một biến toàn cầu trong môi trường và sử dụng ở đây Lưu ý: Đây chỉ là một cách giải quyết, nó cần phải làm việc như đã nêu trong các dòng trên.

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