2014-07-03 16 views
6

Tôi đang cố tạo một javadoc tổng hợp cho một dự án đa mô-đun. Dự án biên dịch với mvn install -DskipTests (Tôi không chạy thử nghiệm trên máy của mình). Khi tôi chạy mvn validate javadoc:javadoc, nó hoạt động và biên dịch tất cả javadoc trong mỗi thư mục modules \ target \ apidocs. Sau đó, khi tôi chạy mvn validate javadoc:javadoc javadoc:aggregate hoặc mvn validate javadoc:aggregate không thành công với khoảng 1200 dòng lỗi. Một số ví dụ về loại là:Maven javadoc: javadoc hoạt động nhưng javadoc: tổng hợp ném lỗi trông giống như lỗi biên dịch

Failed to execute goal org.apache.maven.plugins:maven-javadoc-plugin:2.9.1:aggregate (default-cli) on project commons-superpom: An error has occurred in JavaDocs report generation: 
[ERROR] Exit code: 1 - C:\workspaces\win\tfs\****\Foo.java:21: type org.springframework.context.ApplicationListener does not take parameters 
[ERROR] public class Foo implements ApplicationContextAware, ApplicationListener<ContextRefreshedEvent> { 
[ERROR]^
. 
. 
. 
C:\workspaces\win\tfs\****\test\Bar.java:52: cannot find symbol 
[ERROR] symbol : class PostInsertEvent 
[ERROR] location: class com.Barclass 
[ERROR] public void BarFunct(PostInsertEvent event) { 
[ERROR]^
[ERROR] C:java.lang.NullPointerException 
[ERROR] at com.sun.tools.javadoc.TypeMaker.getType(TypeMaker.java:67) 
[ERROR] at com.sun.tools.javadoc.TypeMaker.getType(TypeMaker.java:29) 
[ERROR] at com.sun.tools.javadoc.ClassDocImpl.superclassType(ClassDocImpl.java:439) 
[ERROR] at com.sun.tools.doclets.internal.toolkit.util.Util.getAllInterfaces(Util.java:386) 
[ERROR] at com.sun.tools.doclets.internal.toolkit.util.Util.getAllInterfaces(Util.java:424) 
[ERROR] at com.sun.tools.doclets.internal.toolkit.util.ClassTree.processType(ClassTree.java:162) 
[ERROR] at com.sun.tools.doclets.internal.toolkit.util.ClassTree.buildTree(ClassTree.java:114) 
[ERROR] at com.sun.tools.doclets.internal.toolkit.util.ClassTree.<init>(ClassTree.java:73) 
[ERROR] at com.sun.tools.doclets.internal.toolkit.AbstractDoclet.startGeneration(AbstractDoclet.java:104) 
[ERROR] at com.sun.tools.doclets.internal.toolkit.AbstractDoclet.start(AbstractDoclet.java:64) 
[ERROR] at com.sun.tools.doclets.formats.html.HtmlDoclet.start(HtmlDoclet.java:42) 
[ERROR] at com.sun.tools.doclets.standard.Standard.start(Standard.java:23) 
[ERROR] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
[ERROR] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
[ERROR] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
[ERROR] at java.lang.reflect.Method.invoke(Method.java:597) 
[ERROR] at com.sun.tools.javadoc.DocletInvoker.invoke(DocletInvoker.java:269) 
[ERROR] at com.sun.tools.javadoc.DocletInvoker.start(DocletInvoker.java:143) 
[ERROR] at com.sun.tools.javadoc.Start.parseAndExecute(Start.java:340) 
[ERROR] at com.sun.tools.javadoc.Start.begin(Start.java:128) 
[ERROR] at com.sun.tools.javadoc.Main.execute(Main.java:41) 
[ERROR] at com.sun.tools.javadoc.Main.main(Main.java:31) 

Sau khi nó bị treo tất cả những gì còn lại trong thư mục/mục tiêu bên cạnh pom.xml mẹ tôi là 2 file 1 là javadoc-bó-tùy chọn, trong đó có một tập tin xml:

<?xml version="1.0" encoding="UTF-8"?> 
<javadocOptions> 
    <docletArtifacts> 
    <docletArtifact /> 
    </docletArtifacts> 
    <tagletArtifacts> 
    <tagletArtifact /> 
    </tagletArtifacts> 
    <excludePackageNames> 
    <excludePackageName>org.foobar.*</excludePackageName> 
    </excludePackageNames> 
    <javadocResourcesDirectory>src/main/javadoc</javadocResourcesDirectory> 
</javadocOptions> 

và trang thứ hai là trang web chứa tệp apidocs chứa 3 tệp javadoc.bat, tùy chọn và gói. Chúng chứa những gì chúng xuất hiện để chứa một tập lệnh batch để chạy javadoc.exe với các tùy chọn đó và trên các gói đó.

Lỗi đầu tiên tôi đã sao chép bị lỗi sai. ApplicationListener được tham số hóa và có thể lấy ContextRefreshedEvent trên tài liệu hướng dẫn mùa xuân. PostInsertEvent được nhập chính xác cũng như trong lỗi thứ hai. Tôi không biết nơi NullPointerException đang xảy ra.

cấu hình plugin của tôi cho javadoc: tổng hợp được như sau:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-javadoc-plugin</artifactId> 
    <version>${maven-javadoc-plugin.version}</version> 
    <executions> 
      <execution> 
        <id>attach-javadocs</id> 
        <goals> 
          <goal>aggregate</goal> 
        </goals> 
      </execution> 
    </executions> 
    <configuration> 
      <excludePackageNames>org.hibernate.*;org.spring.*<-!-- ;com.***.hibernate.audit --></excludePackageNames> 
      <verbose>true</verbose> 
      <fork>true</fork> 
      <showDeprecation>true</showDeprecation> 
      <showWarnings>true</showWarnings> 
      <source>${java.source.version}</source> 
      <target>${java.target.version}</target> 
      <compilerVersion>${java.source.version}</compilerVersion> 
      <compilerArgument>-Xlint:all</compilerArgument> 
      <minmemory>128m</minmemory> 
      <maxmem>512m</maxmem> 

      <encoding>${project.build.sourceEncoding}</encoding> 

      <additionalparam> 
        -charset UTF-8 
        -docencoding UTF-8 
        -version 
        -author 
        -breakiterator 
        -linksource 
        -sourcetab 4 
        -windowtitle "${project.name} ${project.version} API Reference" 
        -doctitle "${project.name} ${project.version} API Reference" 
        -bottom "Copyright ${project.inceptionYear}-Present ${project.organization.name}. All Rights Reserved." 
        -link http://java.sun.com/javase/6/docs/api/ 
        -link http://jsr311.java.net/nonav/releases/1.1 
      </additionalparam> 
    </configuration> 
</plugin> 

Nếu tôi loại trừ gói nhận xét sau đó xây dựng chạy tốt. Tuy nhiên, nếu tôi loại trừ tất cả các tệp trong gói và không phải gói thì nó sẽ bị lỗi với các lỗi rất giống nhau. Tôi có thể tạo ra javadoc tốt trong nhật thực. Tôi có thể dừng nullpointerexception nếu tôi chỉnh sửa tệp tùy chọn được tạo sau khi không sử dụng được 3.3.2.GA/hibernate-core-3.3.2.GA.jar thay vì hibernate-core-4.1.8.Final.jar và sau đó chạy tập tin dơi. Tuy nhiên, điều này tạo ra một trang javadoc tổng hợp hoàn chỉnh, có một số lỗi liên quan đến @Typedef trong khi chạy. Javadoc 1.7_60 và 1.6_45 đều thất bại trong cùng một cách.

+0

Vui lòng xem xét đăng độ phân giải là câu trả lời để bạn có thể đánh dấu nó là được chấp nhận; câu hỏi này hiện đang xuất hiện trong danh sách các câu hỏi chưa được trả lời và điều đó không thực sự phù hợp. – muffin

+0

Chắc chắn tôi không biết rằng tôi có thể làm điều đó nhờ. – alexddupree

Trả lời

1

Đã sửa lỗi: Có một bug trong trình biên dịch javadoc cả 1.6 và 1.7 trong đó chú thích không có một cái bình ném NPE. Trình biên dịch javadoc 1.8 hoạt động tuy nhiên tôi vẫn nhận được các lỗi vì tôi không có jar chính xác. Tôi đã phải xem xét thông qua một số poms khác nhau như là một trong các mô-đun của tôi đã có một thư viện hibernate cứng mã hóa vào nó.

Kết quả cuối cùng: Khi tôi thay đổi thư viện đó thành một con quạ tiêu chuẩn không thể biên dịch nhưng javadoc: tổng hợp sẽ chạy tốt. Chuyển cả hai sang phiên bản trong mô-đun của tôi cũng không hoạt động. Tôi đã phải loại bỏ các mô-đun từ xây dựng javadoc của tôi bằng cách sử dụng this làm việc xung quanh. Điều này không quan trọng nhiều như nó là một mô-đun thử nghiệm nhưng nếu tôi đã cần nó tôi sẽ chỉ đơn giản là thêm một hồ sơ cho phép tôi thay đổi phiên bản trên chạy javadoc.

Hy vọng không ai bị kẹt lại lần nữa như tôi đã làm. :)