2014-07-03 8 views
6

मैं एक बहु मॉड्यूल परियोजना के लिए एक समेकित जावाडोक बनाने के लिए कोशिश कर रहा हूँ फेंकता है। प्रोजेक्ट mvn install -DskipTests के साथ संकलित करता है (मैं अपनी मशीन पर परीक्षण नहीं चला रहा हूं)। जब मैं mvn validate javadoc:javadoc चलाता हूं तो यह प्रत्येक मॉड्यूल \ target \ apidocs निर्देशिका में सभी javadoc को काम करता है और संकलित करता है। फिर जब मैं चलाने या तो mvn validate javadoc:javadoc javadoc:aggregate या mvn validate javadoc:aggregate त्रुटियों के 1200 के बारे में लाइनों के साथ के माध्यम से partway विफल रहता है। प्रकार के कुछ उदाहरण हैं:Maven जावाडोक: जावाडोक काम करता है लेकिन जावाडोक: कुल त्रुटियों कि संकलक त्रुटियों की तरह लग रहे

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) 

यह दुर्घटनाओं के बाद वह सब/लक्ष्य निर्देशिका में छोड़ दिया है मेरे माता पिता pom.xml करने के लिए अगले 2 फ़ाइलें है 1 जावाडोक गठरी-विकल्प जो एक 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> 

और दूसरी साइट ऐसी साइट है जिसमें एपिडॉक्स नामक एक फ़ाइल है जिसमें 3 फ़ाइलें javadoc.bat, विकल्प और संकुल शामिल हैं। वे उन विकल्पों और उन पैकेजों के साथ javadoc.exe को चलाने के लिए बैच स्क्रिप्ट रखने के लिए दिखाई देते हैं।

पहले त्रुटि मैं प्रतिलिपि बनाई सीधे ऊपर गलत है। एप्लिकेशन लिस्टनर पैरामीटरकृत है और वसंत दस्तावेज के अनुसार ContextRefreshedEvent ले सकता है। PostInsertEvent दूसरी त्रुटि में भी सही ढंग से आयात किया जाता है। मुझे नहीं पता कि NullPointerException कहां हो रहा है। जावाडोक के लिए

मेरे प्लगइन विन्यास: कुल इस प्रकार है के रूप में:

<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> 

मैंने टिप्पणी पैकेज बाहर करते हैं तो निर्माण ठीक चलाता है। यदि मैं पैकेज में सभी फ़ाइलों को बाहर करता हूं और पैकेज नहीं तो यह बहुत ही समान त्रुटियों से दुर्घटनाग्रस्त हो जाता है। मैं javadoc उत्पन्न ग्रहण में बस ठीक कर सकते हैं। मैं NullPointerException रोक सकता है अगर मैं के बाद एक विफलता हाइबरनेट कोर-4.1.8.Final.jar के बजाय 3.3.2.GA/hibernate-core-3.3.2.GA.jar उपयोग करने के लिए और फिर से चलाने के लिए विकल्पों उत्पन्न फ़ाइल को संपादित बल्ले फ़ाइल। यह एक पूर्ण समग्र जावाडोक साइट का उत्पादन करता है, हालांकि, रन में @Typedef से संबंधित कई त्रुटियां हैं। जावाडोक 1.7_60 और 1.6_45 दोनों एक ही तरीके से असफल हो जाते हैं।

+0

एक जवाब के रूप संकल्प पोस्टिंग ताकि आप इसे चिह्नित कर सकते हैं के रूप में स्वीकार करने पर विचार करें; यह प्रश्न वर्तमान में अनुत्तरित प्रश्नों की सूची में दिखाई दे रहा है और यह वास्तव में उचित नहीं है। – muffin

+0

निश्चित रूप से मुझे नहीं पता था कि मैं यह धन्यवाद कर सकता हूं। – alexddupree

उत्तर

1

फिक्स्ड: वहाँ जावाडोक संकलक में एक bug है दोनों 1.6 और 1.7 जहां एनोटेशन कि एक जार की जरूरत नहीं है एक एनपीई फेंक देते हैं। 1.8 जावाडोक कंपाइलर काम करता है हालांकि मुझे अभी भी त्रुटियां मिल रही हैं क्योंकि मेरे पास सही जार नहीं था। मुझे कई अलग-अलग पोम्स देखना पड़ा क्योंकि मेरे मॉड्यूल में से एक में एक अलग हाइबरनेट लाइब्रेरी थी जिसमें हार्ड कोड किया गया था।

अंतिम परिणाम: जब मैंने उस लाइब्रेरी को मानक में बदल दिया तो एक मैवेन संकलित नहीं हो सका लेकिन जावाडोक: कुल मिलाकर ठीक होगा। मेरे मॉड्यूल में दोनों संस्करणों को स्विच करना या तो काम नहीं करता था। मैं this का उपयोग कर अपने जावाडोक बिल्ड से मॉड्यूल को हटाने के लिए समाप्त हुआ। इससे कोई फर्क नहीं पड़ता क्योंकि यह एक प्रयोगात्मक मॉड्यूल था, लेकिन अगर मुझे इसकी ज़रूरत होती तो मैं बस एक प्रोफ़ाइल जोड़ता जो मुझे जावाडॉक रन पर संस्करण बदलने की इजाजत देता।

आशा है कि कोई भी इस पर फिर से अटक जाती है जैसे मैंने किया था। :)

संबंधित मुद्दे