2012-02-08 14 views
12

Tôi đang cố gắng:làm thế nào để tôi nhận được một xây dựng maven java để thất bại cho cảnh báo trình biên dịch?

 <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>2.3.2</version> 
      <configuration> 
       <source>1.6</source> 
       <target>1.6</target> 
       <compilerArgument>-Werror</compilerArgument> 
       <fork>true</fork> 
      </configuration> 
     </plugin> 

nhưng không có niềm vui. Bất kỳ ý tưởng nào bây giờ để có được thời trung cổ trên các lỗi như đề xuất tại this blog post?

+0

Có lỗi như được đề cập bên dưới không còn là vấn đề nữa. Biểu mẫu này được chỉ định với compilerArgument hoạt động rất tốt. –

Trả lời

1

EDIT: Câu trả lời này là lỗi thời tuy nhiên tôi không thể xóa nó vì nó là một câu trả lời được chấp nhận vào thời điểm đó.

Tis bug with Maven xem: http://jira.codehaus.org/browse/MCOMPILER-120 nó đã được sửa trong 2.4 của trình biên dịch Maven-plugin nhưng tôi không tin rằng nó đã được phát hành. sẽ không hoạt động.

+0

maven-compiler-plugin 2.4 đã được phát hành cho Maven Central – yegor256

+0

Đúng, nhưng không phải khi tôi trả lời. –

+1

Chỉ cần rõ ràng, lỗi này không còn là vấn đề nữa và biểu mẫu được chỉ định trong câu hỏi hoạt động tuyệt vời. –

0

Có một hình thức thay thế có thể dùng thử? Lưu ý s trên cuối <compilerArguments>

<configuration> 
    <compilerArguments> 
     <Werror /> 
    </compilerArguments> 
</configuration> 
0

Bằng cách sử dụng giải pháp thay thế trong this comment trong open jira issue cho trình biên dịch trình biên dịch maven, bản dựng có thể không thành công đối với cảnh báo trình biên dịch.

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

<plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <version>2.3.2</version> 
     <configuration> 
      <compilerId>javac</compilerId> 
      <source>1.6</source> 
      <target>1.6</target> 
      <compilerArgument>-Werror</compilerArgument> 
      <showDeprecation>true</showDeprecation> 
     </configuration> 

     <dependencies> 
      <dependency> 
       <groupId>org.codehaus.plexus</groupId> 
       <artifactId>plexus-compiler-api</artifactId> 
       <version>1.8.2</version> 
       <exclusions> 
        <exclusion> 
        <groupId>org.codehaus.plexus</groupId> 
        <artifactId>plexus-component-api</artifactId> 
        </exclusion> 
       </exclusions> 
      </dependency> 
      <dependency> 
       <groupId>org.codehaus.plexus</groupId> 
       <artifactId>plexus-compiler-manager</artifactId> 
       <version>1.8.2</version> 
       <exclusions> 
        <exclusion> 
        <groupId>org.codehaus.plexus</groupId> 
        <artifactId>plexus-component-api</artifactId> 
        </exclusion> 
       </exclusions> 
      </dependency> 
      <dependency> 
       <groupId>org.codehaus.plexus</groupId> 
       <artifactId>plexus-compiler-javac</artifactId> 
       <version>1.8.2</version> 
       <scope>runtime</scope> 
       <exclusions> 
        <exclusion> 
         <groupId>org.codehaus.plexus</groupId> 
         <artifactId>plexus-component-api</artifactId> 
        </exclusion> 
       </exclusions> 
      </dependency> 
     </dependencies> 
    </plugin> 
20

Cập nhật cho năm 2015, sử dụng Maven 3.3 và Java 8.

Dưới đây là một cấu hình biên dịch tối thiểu cho phép tất cả các cảnh báo và làm cho xây dựng thất bại bất cứ khi nào cảnh báo xảy ra.

<plugins> 
    <plugin> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <version>3.3</version> 
     <configuration> 
      <source>1.8</source> 
      <target>1.8</target> 
      <showWarnings>true</showWarnings> 
      <compilerArgs> 
       <arg>-Xlint:all</arg> 
       <arg>-Werror</arg> 
      </compilerArgs> 
     </configuration> 
    </plugin> 
</plugins> 

Bits cần chú ý:

  • <showWarnings>true</showWarnings> là bắt buộc. Vì lý do không xác định, Maven theo mặc định chủ động chặn cảnh báo với cờ -nowarn, vì vậy các cờ -Xlint-Werror sẽ bị bỏ qua.
  • showDeprecation không cần phải được bật vì -Xlint:all đã phát ra cảnh báo không dùng nữa.
  • Thử nghiệm cho thấy rằng fork không cần phải được bật, mặc dù tài liệu nói cách khác.
+0

Tôi muốn loại bỏ 'groupId' cho các plugin Maven tích hợp để nhấn mạnh vị trí đặc biệt của chúng như được xây dựng sẵn. Tất cả các plugin Maven tích hợp đều có ID nhóm mặc định là 'org.apache.maven.plugins', vì vậy không cần thiết phải chỉ định nó trong POM. (Hãy thử 'mvn help: effective-pom' để xác minh điều này.) – glts

2

Mới trong maven-compiler-plugin 3.6.0: cờ failOnWarning. Điều này làm việc cho tôi:

<plugin> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>3.6.0</version> 
    <executions> 
     <execution> 
     <id>compile</id> 
     <phase>process-sources</phase> 
     <goals> 
      <goal>compile</goal> 
     </goals> 
     <configuration> 
      <compilerArgument>-Xlint:-processing</compilerArgument> 
      <failOnWarning>true</failOnWarning> 
     </configuration> 
     </execution> 
    </executions> 
    </plugin> 

Lưu ý rằng tôi đã phải loại trừ processing lint hoặc chú thích tự động vấn đề của sẽ phá vỡ xây dựng với "biểu tượng không tìm thấy" khó hiểu lỗi.

+1

Câu trả lời ở trên hoạt động, mặc dù tôi đã cố gắng làm cho nó hoạt động mà không cần cài đặt '-Xlint' và điều đó không thành công. Tôi tìm thấy ' true' giống như ' -Werror'. Bởi chính nó '-Werror' không làm bất cứ điều gì vì nó cần phải được ghép nối với' -Xlint: all'. Vì vậy, tự nó ' true' cũng không làm gì cả. –

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