2016-01-19 14 views
14

Cập nhật chung, sau khi một số nghiên cứu
Tôi muốn xây dựng dự án của tôi chạy gradle 2.0 với gradle build trong giao diện điều khiển tôi bị mắc kẹt tại thế hệ javadoc. Tôi đang sử dụng Java 8, precisly jdk1.8.0_66jre1.8.0_66. Bây giờ khi tôi muốn xây dựng dự án của tôi gõ gradle build trong PowerShell tôi nhận được lỗi này:Disable tất cả javadoc trong Gradle

5 errors 
10 warnings 
:my-subproject1:javadoc FAILED 
    FAILURE: Build failed with an exception. 

* What went wrong: 
Execution failed for task ':my-subproject1:javadoc'. 
> Javadoc generation failed. 

Một lỗi mẫu và một cảnh báo mẫu:

C:\some\long\path\MyClass.java:37: error: @param name not found 
     * @param appCode 
       ^
C:\some\long\path\MyOtherClass.java:37: warning: no description for @param 
     * @param appCode 

Nếu tôi vô hiệu hóa một trong những tiểu dự án của tôi sử dụng tasks.findByPath(":my-subproject:javadoc").enabled = false trong tập tin build.gradle của tôi cũng nhận được lỗi tương tự cho tiểu dự án tiếp theo.
Nghiên cứu đã chỉ ra rằng tôi không đơn độc với vấn đề của tôi; Java 8 dường như thực sự nghiêm ngặt với JavaDoc. Điều này là do doclint for Javadoc mới. Tìm thấy trên this site. Nó cũng cung cấp một giải pháp cho Maven và Gradle. Nhưng đối với tôi nó không hoạt động, một answer I got khác cũng không hoạt động. nỗ lực của tôi để giải quyết nó trông như thế này ngay bây giờ trong build.gradle tôi cho tiểu dự án này:

//Solution by the second link 
allprojects { 
    tasks.withType(Javadoc).all { enabled = false } 
} 
//Solution by the first link 
if (JavaVersion.current().isJava8Compatible()) { 
    allprojects { 
     tasks.withType(Javadoc) { 
      options.addStringOption('Xdoclint:none', '-quiet') 
     } 
    } 
} 


dependencies{ 
    compile project(':my-subproject1') 
    compile project(':my-subproject2') 
    compile project(':my-subproject3') 
} 

Có ai biết làm thế nào để giải quyết vấn đề này hoặc là có cách giải quyết khác?

Edit:

C:. | Root 
├───build.gradle 
│ └───2.0 
│  └───taskArtifacts 
├───buildSrc 
│ ├───.gradle 
│ │ ├───2.0 
│ │ │ └───taskArtifacts 
│ │ └───noVersion 
│ │  └───buildSrc 
│ ├───build 
│ │ ├───classes 
│ │ │ └───main 
│ │ ├───dependency-cache 
│ │ ├───libs 
│ │ └───tmp 
│ └───src 
│  └───main 
│   └───java 
│    └───com 
│     └───custom 
│      └───gradle 
│       └───util 
├───my-subproject1 
├───my-subproject2 
├───my-subproject3 
│ ├───my-sub-subproject 
│ ├───my-current-directory | Magic happens here 
│ │ ├───some.package.identifier 
│ │ │ ├───.clover 
│ │ │ ├───.settings 
│ │ │ ├───bin 
│ │ │ │ └───package 
│ │ │ │  └───subpackage 
│ │ │ └───buil.gradle | This should build my subproject 

Giải pháp: Đặt nó trong thư mục gốc build.gradle tập tin.

Trả lời

34

Nếu bạn có tập lệnh xây dựng dự án gốc, thì bạn có thể vô hiệu hóa tất cả tác vụ của dự án phụ theo loại của nó. Trong trường hợp của bạn, theo loại Javadoc, như:

subprojects { 
    tasks.withType(Javadoc).all { enabled = false } 
} 
+0

Vâng đó là loại một tiểu dự án mà tôi nên xây dựng mà không có sự nghỉ ngơi, tôi chỉ có phụ thuộc vào giống nhau mức độ, nhưng gợi ý cho đến nay không phải là xấu :) –

+0

ngay cả khi thay đổi 'tiểu dự án' ->' allprojects' nó không hoạt động ... –

+0

Hm, bạn có thể cung cấp một ví dụ về cấu trúc dự án của bạn, với vị trí của thư mục roo, tệp settings.gradle và một số tệp build.gradle? 'subprojects' nên được sử dụng trong script build.gradle gốc – Stanislav

10

Tôi chạy vào này là tốt và sau khi đào bới mã nguồn Gradle của tôi tìm thấy một giải pháp mà làm việc trong Gradle 2.9.

Thay vì options.addStringOption('Xdoclint:none', '-quiet') hãy thử options.addBooleanOption('Xdoclint:none', true). Điều đó đúng cách sẽ chuyển tùy chọn -Xdoclint:none đến lời gọi javadoc cơ bản và bỏ qua các lỗi trong khi vẫn tạo ra đầu ra Javadoc. Tôi đã làm điều này trực tiếp trong tuyên bố nhiệm vụ javadoc, nhưng nó có thể sẽ hoạt động bằng cách sử dụng phương thức allprojects mà bạn đã thử ở trên.

+0

Để cụ thể điều này sẽ không "bỏ qua" lỗi. Nó sẽ hạ cấp chúng thành cảnh báo. Vì vậy, nếu bạn thất bại trong việc xây dựng trên các cảnh báo, như https://stackoverflow.com/a/33153700/1650674, thì điều này sẽ vẫn không thành công. – tir38

2

Đây là cách tôi vô hiệu hóa nó - trong tập tin build.gradle của tôi, tôi nói thêm:

tasks.withType(Javadoc).all { enabled = false } // non ascii characters make it crash 
Các vấn đề liên quan