जावा 8 में जावेदोक टैग अधूरे होने पर मावेन काम नहीं कर रहा है


312

चूंकि मैं मावेन का उपयोग करता हूं इसलिए मैं अपने स्थानीय रिपॉजिटरी प्रोजेक्ट्स को बनाने और स्थापित करने में सक्षम रहा हूं जिनके पास अपूर्ण जावाडॉक टैग हैं (उदाहरण के लिए, एक लापता पैरामीटर)।

हालाँकि, जब से मैंने जावा 8 (1.8.0-ea-b90) में माइग्रेट किया है, मावेन लापता प्रलेखन टैग के बारे में पूरी तरह से सख्त है और मुझे Javadoc समस्याओं से संबंधित बहुत सारी त्रुटियां दिखाती हैं जब मैं एक प्रोजेक्ट बनाने या स्थापित करने की कोशिश करता हूं जहां Javadoc नहीं है "उत्तम"। मैं अपने स्थानीय भंडार में संकलन और स्थापित करने की कोशिश कर रही कुछ परियोजनाएं तृतीय पक्ष परियोजनाएं हैं जिनसे मेरा नियंत्रण नहीं है। तो इन सभी परियोजनाओं में सिर्फ सभी जावास्क्रिप्ट को ठीक करने का समाधान मेरे परिदृश्य में संभव नहीं लगता है।

जब मैं mvn clean package installअपनी परियोजना में निष्पादित करता हूं तो यह मेरे द्वारा देखे जाने वाले आउटपुट का एक छोटा हिस्सा होता है :

[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 9.026s
[INFO] Finished at: Mon Apr 08 21:06:17 CEST 2013
[INFO] Final Memory: 27M/437M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-javadoc-plugin:2.9:jar (attach-javadocs) on project jpc: MavenReportException: Error while creating archive:
[ERROR] Exit code: 1 - /Users/sergioc/Documents/workspaces/heal/jpc/src/main/java/org/jpc/engine/prolog/PrologDatabase.java:10: error: @param name not found
[ERROR] * @param terms the terms to assert
[ERROR] ^
[ERROR] /Users/sergioc/Documents/workspaces/heal/jpc/src/main/java/org/jpc/engine/prolog/PrologDatabase.java:11: warning: no description for @return
[ERROR] * @return
[ERROR] ^

Javadoc Maven प्लगइन मेरे POM में इस तरह कॉन्फ़िगर किया गया है:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-javadoc-plugin</artifactId>
    <version>2.9</version>
    <executions>
        <execution>
            <id>attach-javadocs</id>
            <goals>
                <goal>jar</goal>
            </goals>
        </execution>
    </executions>
</plugin>

जैसा कि मैंने पहले कहा, अगर मैं जावा 7 पर वापस जाता हूं तो सब कुछ ठीक चल रहा है। क्या यह जावा में चलने वाले मावेन से संबंधित बग है? मैं इसे कैसे काम कर सकता हूं (यानी, परियोजना के Javadoc का निर्माण करने में सक्षम होने और जावा 8 के साथ अपने स्थानीय रिपॉजिटरी में अपना कोड स्थापित करने के लिए)? मैंने OSX में Maven 3.0.3 और 3.0.5 दोनों के साथ परीक्षण किया है।

अपडेट करें:

अगर मैं <failOnError>false</failOnError>(धन्यवाद मार्टिन) के साथ अपने Javadoc प्लगइन कॉन्फ़िगरेशन को बदलता हूं :

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-javadoc-plugin</artifactId>
    <version>2.9</version>
    <executions>
        <execution>
            <id>attach-javadocs</id>
            <goals>
                <goal>jar</goal>
            </goals>
        </execution>
    </executions>
</plugin>

फिर परियोजना मेरे स्थानीय भंडार में स्थापित है। हालाँकि, Javadoc JAR अभी भी उत्पन्न नहीं हुआ है।

इस नए कॉन्फ़िगरेशन के साथ कंसोल में मेरे द्वारा देखे जाने वाले आउटपुट का एक टुकड़ा है:

[ERROR] MavenReportException: संग्रह बनाते समय त्रुटि: बाहर निकलें कोड: 1 - /Users/Injava:18: चेतावनी: नहीं @param ... कमांड लाइन थी: / लाइब्रेरी / जावा / होम / बिन / jadadoc @options @packages

'/ उपयोक्ता / सर्जियोक / दस्तावेज / कार्यस्थान / चंगा / मिनीटूलबॉक्स / लक्ष्य / एपिडोक' डीआईआर में उत्पन्न जवादोक फाइलों को देखें।

org.apache.maven.plugin.javadoc.AbstractJavadocMojo.executeJavadocCommandLine (AbstractJavadocMojo.java:5043) org.apache.maven.plugin.javadoc.AbstractJavadocMojo.export.ecuteRecute। .javadoc.JavadocJar.execute (JavadocJar.java:181) org.apache.maven.plugin.DefaultBuildPluginManager.execoMojo (DefaultBuildPluginManager.java:101) पर org.apache.m.wen.live.live.gov.in पर जाएं। : 209) org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:153) org.apache.maven.lifecycle.in.in.MojoExecutor.execute (MojoExecutor.java:145) पर orgapache। maven.lifecycle.internal.ifecycleModuleBuilder.buildProject (orgecapModuleBuilder.java:84) org.apache.maven.lifecycle.internal.LececycleModuleBuilder पर।buildProject। org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:320) org.apache.maven.DefaultMaven.execute (DefaultMaven.java .156) org.apache.maven.cli.MavenCli.execute (MavenClij) पर। : 537) org.apache.maven.cli.MavenCli.doMain (MavenCli.java:196) org.apache.maven.cli.MavenCli.main (MavenCli.java:141) sun.reflect.NativeMethodAccessorImpl.in पर। मूल विधि) sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java.co) पर sun.reflect.elegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) जावा में jl.invoke (Method.java:491) org.codehaus.plexus.classworlds.launcher.auncher.auncher.launchEnhanced (Launcher.java:290) पर org.codehaus.plexus.classworlds.launcher.Launcher.auncher.launch (Launcher.java:230) पर क्लिक करें। org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:409) org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:352) पर

सूत्रों को कैसे बनाया जाए, इस परियोजना को स्थापित करने और जावा 7 के साथ काम करने के एक चरण में जावदोक JAR उत्पन्न करने के बारे में कोई भी समाधान?


हाय @ 75 इंचियन, मैंने सवाल को अपडेट किया है, वास्तव में वे त्रुटियां हैं (हालांकि आश्चर्यजनक रूप से त्रुटि की अंतिम पंक्ति एक चेतावनी को संदर्भित करती है, जैसा कि आप उत्पन्न आउटपुट में देख सकते हैं)। यह परियोजना मेरे स्थानीय भंडार में स्थापित नहीं है, इसलिए इसे एक साधारण चेतावनी नहीं माना जाता है :(
सर्जियो

GoogleJuice के लिए: मुझे त्रुटि मिली "त्रुटि: 'का बुरा उपयोग"> "क्योंकि मेरे पास जावाडॉक टिप्पणी में एक बड़ा तीर था
ड्रू स्टीफंस

1
हो सकता है कि यह किसी के लिए उपयोगी हो: इंटेलीज में इन सभी अधूरे टैगों को आप आसानी से देख सकते हैं Ctrl + Alt + Shift + i "घोषणापत्र में जावाडॉक समस्याएँ हैं"
सर्गेई पिओनारेव

1
यह मावेन नहीं है, यह जावदोक कार्यक्रम है जिसे जावा 8 में बहुत सख्त मिला है।
Thorbjørn Ravn Andersen

जवाबों:


387

सबसे अच्छा उपाय यह होगा कि जावदोक त्रुटियों को ठीक किया जाए। यदि किसी कारण से यह संभव नहीं है (यानी: ऑटो जनरेट सोर्स कोड) तो आप इस चेक को निष्क्रिय कर सकते हैं।

DocLint जावा 8 में एक नई सुविधा है , जिसे संक्षेप में प्रस्तुत किया गया है:

विकास चक्र में जावदोक टिप्पणियों में त्रुटियों का पता लगाने के लिए एक साधन प्रदान करें और एक तरह से जो आसानी से स्रोत कोड से जुड़ा हो।

यह डिफ़ॉल्ट रूप से सक्षम है, और Javadocs बनाने से पहले पूरी तरह से कई चेक चलाएगा। आपको इस धागे में निर्दिष्ट जावा 8 के लिए इसे बंद करने की आवश्यकता है । आपको इसे अपने मावेन कॉन्फ़िगरेशन में जोड़ना होगा:

<profiles>
  <profile>
    <id>java8-doclint-disabled</id>
    <activation>
      <jdk>[1.8,)</jdk>
    </activation>
    <properties>
      <javadoc.opts>-Xdoclint:none</javadoc.opts>
    </properties>
  </profile>
</profiles>
<build>
  <plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
        <version>2.9</version>
        <executions>
            <execution>
                <id>attach-javadocs</id>
                <goals>
                    <goal>jar</goal>
                </goals>
                <configuration>
                    <additionalparam>${javadoc.opts}</additionalparam>
                </configuration>
            </execution>
        </executions>
    </plugin>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-site-plugin</artifactId>
        <version>3.3</version>
        <configuration>
          <reportPlugins>
            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-javadoc-plugin</artifactId>
              <configuration>
                <additionalparam>${javadoc.opts}</additionalparam>
              </configuration>
            </plugin>
          </reportPlugins>
        </configuration>
      </plugin>
   </plugins>
</build>

मावेन-जावाडॉक-प्लगइन 3.0.0+ के लिए: बदलें

<additionalparam>-Xdoclint:none</additionalparam>

साथ में

<doclint>none</doclint>

18
क्या JDK 8 के साथ-साथ JDK 7 के साथ यह काम करने का कोई तरीका है ? यह JDK 7 पर विफल रहता है क्योंकि इसके javadocविकल्प को नहीं जानता है।
फेयूरमुरेल

8
हालांकि यह यहाँ पूछे गए प्रश्न का उत्तर देता है, मैं भविष्य के आगंतुकों को सलाह देना चाहूंगा कि पहले पीटर के उत्तर की जांच करें: stackoverflow.com/a/34809831/1180785 (इस मुद्दे को मारने वाले अधिकांश लोगों के पास केवल कुछ स्थानों को ठीक करने के लिए होगा, इसलिए बेहतर है चेक को अक्षम करने की तुलना में उन्हें ठीक करने के लिए!)
डेव

8
मावेन-जावाडॉक-प्लगइन के लिए, उपयोग करें <doclint>none</doclint>Maven.apache.org/plugins/maven-javadoc-plugin/…
coolersport

11
इसके अलावा maven-javadoc-plugin 3.0.0 <additionalparam/>द्वारा प्रतिस्थापित किया गया है <additionalOptions/>मुद्दों को
fdelsert

1
यह सही है। मैं सूचित करना चाहूंगा कि मावेन 2 से मावेन 3 तक प्रवास के दौरान, यह मत भूलो कि इस प्लगइन टैग को रिपोर्टिंग टैग में शामिल नहीं किया जाना चाहिए, लेकिन सीधे pluginManagement (pom.xml)
dimeros

97

जावा 8 और जावा 7 दोनों के साथ काम करने के लिए सबसे आसान तरीका बिल्ड में एक प्रोफ़ाइल का उपयोग करना है:

<profiles>
  <profile>
    <id>doclint-java8-disable</id>
    <activation>
      <jdk>[1.8,)</jdk>
    </activation>

    <build>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-javadoc-plugin</artifactId>
          <configuration>
            <additionalparam>-Xdoclint:none</additionalparam>
          </configuration>
        </plugin>
      </plugins>
    </build>
  </profile>
</profiles>

1
सबसे अच्छा समाधान शायद आपके समाधान के बीच एक हाइब्रिड होगा और एक जैप ने बोल्ड प्रदान किया। यदि आप इसे इस तरह छोड़ते हैं, तो mvn साइट: साइट कमांड अभी भी दुर्घटनाग्रस्त हो जाएगी। आपको एक वैश्विक संपत्ति सेट करने वाले 1.8 jdk द्वारा सक्रिय प्रोफ़ाइल बनाना चाहिए।
मैक्स नाद

64

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

<profiles>
  <profile>
    <id>doclint-java8-disable</id>
    <activation>
      <jdk>[1.8,)</jdk>
    </activation>
    <properties>
      <javadoc.opts>-Xdoclint:none</javadoc.opts>
    </properties>
  </profile>
</profiles>

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-javadoc-plugin</artifactId>
      <version>2.9.1</version>
      <executions>
        <execution>
          <id>attach-javadocs</id> <!-- The actual id should be apparent from maven output -->
          <configuration>
            <additionalparam>${javadoc.opts}</additionalparam>
          </configuration>
        </execution>
      </executions>
    </plugin>
    ...
  </plugins>
</build>

Oracle / open jdk 6, 7, 8 और 11 पर परीक्षण किया गया।


1
और कहाँ विशेष रूप से रखा जाना चाहिए?
साफ करें

1
@ क्लियरलाइट, दोनों buildऔर मावेन profilesमें शीर्ष स्तर के ब्लॉक हैं pom.xmlmaven.apache.org/pom.html#Bild
ओलिवर गोंडस्टा

धन्यवाद। मैंने अंततः इसकी खोज की, लेकिन इस उत्तर के साथ जुड़ा होना अच्छा है।
19

38

Pom फ़ाइल में वैश्विक गुण अनुभाग में जोड़ें:

<project>
    ...
    <properties>
        <additionalparam>-Xdoclint:none</additionalparam>
    </properties>

अन्य उत्तरों में यहां दिए गए सामान्य समाधान (प्लगइन्स अनुभाग में उस संपत्ति को जोड़ना) किसी कारण से काम नहीं किया। केवल इसे विश्व स्तर पर स्थापित करके मैं जावदोक जार का सफलतापूर्वक निर्माण कर सकता था।


1
यह एकमात्र समाधान है जिसने मेरे लिए काम किया। मैंने इसका उत्तर यहाँ भी पढ़ा: blog.joda.org/2014/02/turning-off-doclint-in-jdk-8-javadoc.html
acvcu

37

सबसे छोटा समाधान जो किसी भी जावा संस्करण के साथ काम करेगा:

<profiles>
    <profile>
        <id>disable-java8-doclint</id>
        <activation>
            <jdk>[1.8,)</jdk>
        </activation>
        <properties>
            <additionalparam>-Xdoclint:none</additionalparam>
        </properties>
    </profile>
</profiles>

बस उसे अपने पोम में जोड़ें और आप जाने के लिए अच्छे हैं।

यह मूल रूप से @ एंकॉन का जवाब प्लस @ जैप का जवाब है


Maven-javadoc-plugin 3.0.0 उपयोगकर्ताओं के लिए:

बदलने के

<additionalparam>-Xdoclint:none</additionalparam>

द्वारा

<doclint>none</doclint>


यह मेरे लिए सबसे अच्छा समाधान है। यह बॉट्स जावा 7 और जावा 8 के लिए काम करता है। लेकिन जिस तरह से यह काम करता है वह एक तरह का जादू है:। यह पैरामीटर "extraParam" प्लगइन javadoc में कैसे जोड़ता है (और अन्य को नहीं)
pdem

1
@pdem अतिरिक्त पैरामीटर मावेन में जोड़ा जाता है, न कि जवादोक प्लगइन में। यह समाधान काम करता है कि आप स्पष्ट रूप से प्लगइन का उपयोग कर रहे हैं या नहीं।
फ्रेड पोरिशुन्कुला

2
Maven-javadoc-plugin 3.0.0 के बाद से, आपको अपना <additionalJOption>-Xdoclint:none</additionalJOption>या <doclint>none</doclint>प्रॉपर्टी जोड़ना होगा<properties>
Sergi

हां, JDK 8 संबंधित प्रोफ़ाइल और सेटिंग जोड़ना <doclint> कोई नहीं </ doclint> समस्या का समाधान करता है। यह javadoc जार उत्पन्न करता है जैसा कि यह JDK 7 में उत्पन्न हो रहा था। धन्यवाद।
सौरभ एलसीडी

1
क्या आप स्पष्ट कर सकते हैं: मावेन-जेवाडॉक-प्लगइन 3.0.0 और इसके बाद के संस्करण, अगर मैं बस निर्दिष्ट करता हूं <doclint>none</doclint>(कोई जेडीके संस्करण-आधारित सक्रियण के साथ), तो क्या यह अभी भी 1.8 से कम जेडीके पर विफल होगा, या मावेन-जेडैडोक-प्लगइन स्वचालित रूप से पता लगाता है कि नहीं doclintविकल्प जावा के वर्तमान संस्करण के द्वारा समर्थित है?
गैरेट विल्सन

31

मुझे नहीं लगता कि सिर्फ डॉकलाइन को बंद करना एक अच्छा समाधान है, कम से कम दीर्घकालिक नहीं। यह अच्छा है कि Javadoc थोड़ा अधिक सख्त हो गया है इसलिए अंतर्निहित समस्या को ठीक करने का सही तरीका अंतर्निहित समस्या को ठीक करना है । हां, आपको अंततः उन स्रोत कोड फ़ाइलों को ठीक करने की आवश्यकता होगी।

यहां उन चीजों के बारे में बताया गया है जिनसे आप पहले दूर हो सकते हैं:

  • विकृत HTML (उदाहरण के लिए एक लापता एंड-टैग, अन-एस्केप ब्रैकेट्स इत्यादि)
  • अमान्य {@link }s। (इसी तरह के टैग के लिए भी जाता है जैसे@see )
  • अमान्य @authorमान। यह स्वीकार किया जाता था:@author John <john.doe@mine.com> लेकिन अन-एस्केप किए गए ब्रैकेट के कारण अब और नहीं।
  • Javadoc में HTML तालिकाओं को अब एक सारांश या कैप्शन की आवश्यकता है। स्पष्टीकरण के लिए यह प्रश्न देखें ।

आपको बस अपने स्रोत कोड फ़ाइलों को ठीक करना होगा और अपने Javadoc का निर्माण तब तक करना होगा जब तक कि यह बिना किसी विफलता के निर्माण कर सकता है। बोझिल हाँ, लेकिन व्यक्तिगत रूप से मुझे पसंद है जब मैंने अपनी परियोजनाओं को डॉकलाइन स्तर तक लाया है क्योंकि इसका मतलब है कि मुझे और अधिक विश्वास हो सकता है कि जावदॉक मैं जो उत्पादन करता है वह वास्तव में मेरा इरादा है।

यदि आप कुछ स्रोत कोड पर जावदोक उत्पन्न कर रहे हैं तो निश्चित रूप से समस्या है, उदाहरण के लिए, क्योंकि यह कुछ कोड जनरेटर से आता है, जैसे wsimport । अजीब बात है कि ओरेकल ने JDK8 के अनुपालन के लिए अपने स्वयं के उपकरण तैयार नहीं किए थे वास्तव में JDK8 जारी करने से पहले। ऐसा लगता है कि यह जावा 9 तक तय नहीं किया जाएगा । केवल इस विशेष मामले में मैं इस पृष्ठ पर कहीं और प्रलेखित डॉकलाइन को बंद करने का सुझाव देता हूं।


1
पूरी तरह से यहाँ सहमत हूँ, कहा कि, उत्पन्न कोड के लिए आप बस किसी दिए गए पैकेज में कोड को प्रोसेस नहीं करने के लिए प्लगइन को बता सकते हैं javadoc प्लगइन के कॉन्फ़िगरेशन अनुभाग में एक बहिष्करण पैकेज नाम अनुभाग जोड़कर। देख maven.apache.org/plugins/maven-javadoc-plugin/examples/...
Newtopian

@Newtopian। अच्छी बात। हालाँकि मेरे मामले में मुझे वास्तव wsimportमें जावदोक का हिस्सा बनने के लिए उत्पन्न कोड की आवश्यकता थी ।
पेटेर

यह बहुत आसान है क्योंकि कहा गया है कि हम में से बहुत से लोग इन समस्याओं में चल रहे हैं अपरिचित ओपनसोर्स कोड बनाने की कोशिश कर रहे हैं जिसमें कहीं न कहीं मावेन निर्भरता है और हमें नहीं पता कि यह कैसे काम करता है, इसलिए अंतर्निहित कारणों को दूर करने का कोई आसान तरीका नहीं है। संदर्भ के बारे में बहुत अधिक मायोपिया है। लोगों को उत्तरों के दायरे को सामान्य करने की आवश्यकता है और फ़िक्स बनाने के तरीके के बारे में अधिक विवरण प्रदान करना है।
साफ करें

30

maven-javadoc-pluginकेवल ओवरराइडिंग कॉन्फ़िगरेशन, समस्या को ठीक नहीं करता है mvn site(जैसे रिलीज़ चरण के दौरान उपयोग किया जाता है)। यहाँ मुझे क्या करना है:

<profile>
  <id>doclint-java8-disable</id>
  <activation>
    <jdk>[1.8,)</jdk>
  </activation>
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
        <configuration>
          <additionalparam>-Xdoclint:none</additionalparam>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-site-plugin</artifactId>
        <version>3.3</version>
        <configuration>
          <reportPlugins>
            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-javadoc-plugin</artifactId>
              <configuration>
                <additionalparam>-Xdoclint:none</additionalparam>
              </configuration>
            </plugin>
          </reportPlugins>
        </configuration>
      </plugin>
    </plugins>
  </build>
</profile>

3
यह एक महत्वपूर्ण बिंदु है क्योंकि साइट-प्लगइन सक्रियण में इस सेटिंग की कमी के कारण रिलीज होगी: रिलीज के दौरान विफल होने के लिए प्रदर्शन: तैयारी ने ठीक काम किया है। इसे ढूंढना और ठीक करना बहुत कष्टप्रद समस्या हो सकती है।
पीटर एन। स्टीनमेट्ज़

ध्यान दें, कि के खंड के maven-javadoc-pluginमाध्यम से विन्यास को मावेन के हाल के संस्करणों के लिए अनुशंसित नहीं किया<reportPlugins> गया maven-site-pluginहै
मार्टिन होलर

@ MartinHöller तो रिलीज़ पर त्रुटियों को कैसे हल करें: उचित तरीके से mavene-javadoc-plugin से संबंधित चरण निष्पादित करें: 3.0.1?
विटालि डीरावका

@VitaliiDiravka त्रुटियों पर निर्भर करता है ... कृपया इसके लिए एक अलग प्रश्न पूछें।
मार्टिन होलर

22

आप failOnErrorसंपत्ति सेट करने का प्रयास कर सकते हैं ( प्लगइन प्रलेखन देखें ) false:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-javadoc-plugin</artifactId>
    <version>2.9</version>
    <executions>
        <execution>
            <id>attach-javadocs</id>
            <goals>
                <goal>jar</goal>
            </goals>
            <configuration>
              <failOnError>false</failOnError>
            </configuration>
        </execution>
    </executions>
</plugin>

जैसा कि आप डॉक्स से देख सकते हैं, डिफ़ॉल्ट मान है true


इस विचार के लिए धन्यवाद @Martin। उस संपत्ति के साथ कम से कम मैं प्रोजेक्ट को फिर से बना और स्थापित कर सकता हूं, हालांकि मुझे अभी भी जावा डॉक जार की याद आ रही है (मुझे मावेन सेंट्रल को तैनात करने की आवश्यकता है)। मैंने अपने प्रश्न को प्रयोग के विवरण के साथ अद्यतन किया।
सर्जियो

यह मेरे लिए सबसे पर्याप्त जवाब था। मैं अभी चल रहे विकास के दौरान भवन का परीक्षण करना चाहता था जब javadocs अभी भी अपूर्ण थे।
ZachSand

17

चूँकि यह आपके JRE के संस्करण पर निर्भर करता है, जिसका उपयोग आपके द्वारा न तो अक्षम किए जाने वाले मावेन कमांड को चलाने के लिए किया जाता है DocLint आपके द्वारा pom.xml में डिफ़ॉल्ट रूप

इसलिए, कमांड लाइन से आप स्विच का उपयोग कर सकते हैं -Dadditionalparam=-Xdoclint:none

उदाहरण: mvn clean install -Dadditionalparam=-Xdoclint:none


3
यह विशेष रूप से उपयोगी है क्योंकि आप इसे जेनकिंस भी उपयोग कर सकते हैं। सेट करें 'ग्लोबल MAVEN_OPTS' ('कॉन्फ़िगर सिस्टम' के तहत) -Dadditionalparam=-Xdoclint:noneऔर आपके सभी बिल्ड जावा 8 के साथ काम करेंगे।
विल्फ्रेड ह्यूजेस

mvn org.apache.maven.plugins:maven-javadoc-plugin:3.1.0:jar -DadditionalJOption=-Xdoclint:none- यह मेरे लिए काम करता है
रोमन खोमेश्यनेट्स

10

कॉन्फ़िगरेशन प्रॉपर्टी का नाम maven-javadoc-plugin के नवीनतम संस्करण में बदल दिया गया है जो 3.0.0 है।

इसलिए <अतिरिक्तप्रेम> काम नहीं करेगा। इसलिए हमें इसे नीचे के रूप में संशोधित करना होगा।

   <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-javadoc-plugin</artifactId>
      <version>3.0.0</version>
      <configuration>
         <doclint>none</doclint>
      </configuration>
  </plugin>

doclintयहाँ देखें प्रलेखन: maven.apache.org/plugins/maven-javadoc-plugin/…
पीटर डब्ल्यू

फरवरी 19 में github स्रोत से OpenGrok के निर्माण के लिए इसे हल किया। उल्लेख करना चाहिए कि आपका पैच pom.xmlप्रोजेक्ट src / build डायरेक्टरी में जाता है। मेरे मामले में मुझे बस इतना करना था maven-javadoc-pluginकि आप <configuration></configuration>पहले से मौजूद ब्लॉक में जाएं और जोड़ें <doclint>none</doclint>। यह सब जितना आसान है, एक बार पता चल जाता है, यहाँ मैं ओपनग्रोक में एक अलग बग को ठीक करने की कोशिश कर रहा हूं और इससे पहले कभी भी मावेन का उपयोग नहीं किया है और न ही यह पता लगाने के लिए किसी अन्य उप परियोजना में पुनरावृत्ति करना चाहता हूं त्वरित सुधार कैसे लागू करें।
15

4

मैं अन्य उत्तरों में कुछ अंतर्दृष्टि जोड़ना चाहूंगा

मेरे मामले में

-Xdoclint: कोई नहीं

काम नहीं किया।

उस परियोजना के साथ शुरू करते हैं, मुझे वास्तव में javadoc की बिल्कुल भी आवश्यकता नहीं थी। केवल कुछ आवश्यक प्लगइन्स को इस पर एक बिल्ड टाइम निर्भरता मिली थी।

इसलिए, मेरी समस्या को हल करने का सबसे सरल तरीका था:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-javadoc-plugin</artifactId>
    <configuration>
        <skip>true</skip>
    </configuration>
</plugin>

4

के रूप में maven-जावाडोक-प्लगइन 3.0.0 आप चाहिए उपयोग किया गया है additionalJOption एक अतिरिक्त जावाडोक विकल्प सेट करने, इसलिए यदि आप अक्षम doclint को जावाडोक चाहते हैं, तो आपको निम्न संपत्ति जोड़ना चाहिए।

<properties>
    ...
    <additionalJOption>-Xdoclint:none</additionalJOption>
    ...
<properties>

आपको maven-javadoc-plugin के संस्करण का उल्लेख 3.0.0 या उच्चतर के रूप में भी करना चाहिए।

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-javadoc-plugin</artifactId>
    <version>3.0.0</version>    
</plugin>

3

इसलिए, अपने आप को कुछ घंटे बचाएं जो मैंने नहीं किया और अगर यह काम नहीं करता है तो यह कोशिश करें:

 <additionalJOption>-Xdoclint:none</additionalJOption>

टैग को नए संस्करणों के लिए बदल दिया गया है।



कभी-कभी -Xdoclintखुद ही पर्याप्त नहीं होता है, लेकिन अतिरिक्त आर्गन्स की आवश्यकता होती है। उस के लिए maven-javadoc-pluginप्रदान करने के नए संस्करण additionalJOptions, पुराने नहीं है। एक वर्कअराउंड है: <additionalJOption>"-Xdoclint:none" "--allow-script-in-comments"</additionalJOption>उद्धरण महत्वपूर्ण हैं, अन्यथा प्लगइन उन्हें जोड़ता है और दो के बजाय केवल एक arg मानता है, जिसके परिणामस्वरूप wrong argsत्रुटियां होती हैं।
थोरस्टेन शॉनिंग

पूर्व केवल लिनक्स पर विंडोज पर काम करता है: javadoc: error - Illegal package name: ""-Xdoclint:none" "--allow-script-in-comments""बाहरी उद्धरण लॉगिंग स्टेटमेंट द्वारा जोड़े जाते हैं और शेल पर मौजूद नहीं होते हैं। मुझे लगता है कि समस्या यह है कि विंडोज javadocद्वारा निष्पादित किया जाता है cmd.exe, जो कमांड लाइन के रूप में एक बड़े स्ट्रिंग को पार्स करता है और additionalJOptionइच्छित के रूप में विभाजित करता है । लिनक्स पर आर्ग्स को व्यक्तिगत additionalJOptionरूप से सीधे प्रक्रिया में पास किया जाता है और एक तर्क के रूप में पास किया जाता है, जिससे त्रुटि होती है।
थोरस्टन शॉनिंग

के अनुसार Process Monitor, cmd.exeउपयोग नहीं किया जाता है। जावा सबसे अधिक संभावना है कि बस एक बड़ी कमांड लाइन बनाता है और इसे पास करता है CreateProcess, ताकि यह विंडोज द्वारा इच्छित के रूप में पार्स हो जाए: उद्धरणों का सम्मान करते हुए रिक्त स्थान पर विभाजन बिखरता है।
थोरस्टेन शॉनिंग

3

नीचे जोड़ा गया

JAVA_TOOL_OPTIONS=-DadditionalJOption=-Xdoclint:none

जेनकींस नौकरी में:

कॉन्फ़िगरेशन> बिल्ड पर्यावरण> निर्माण प्रक्रिया के लिए पर्यावरण चर इंजेक्षन> गुण सामग्री

जेनकींस मावेन :-) के माध्यम से कोड निर्माण की मेरी समस्या का हल


यह maven-javadoc-plugin 2.4 के लिए काम करता है, लेकिन 2.5 में शुरू होता है (और 3.0.0 के माध्यम से सभी तरह से), यह एक त्रुटि का कारण बनता है: "कोड से बाहर निकलें: 1 - javadoc: त्रुटि - अमान्य ध्वज: -Xdoclint: कोई नहीं"। तो समाधान भंगुर है।
Akom

1
mvn release:performसिंटैक्स के साथ इसका उपयोग करते समय होना चाहिए mvn release:perform -Darguments="-Dmaven.javadoc.skip=true"
पैट्स

2

मुझे यकीन नहीं है कि यह मदद करने वाला है, लेकिन यहां तक ​​कि मैंने हाल ही में ओजी-4.2.0 संस्करण के साथ भी उसी समस्या का सामना किया । उपरोक्त उत्तरों के माध्यम से पढ़ने के बाद मैंने कमांड लाइन के माध्यम से सिर्फ मैवेन विकल्प जोड़ा है और यह मेरे लिए काम करता है। तो, बस यहाँ साझा कर रहा हूँ।

मैं java 1.8.0_77 का उपयोग कर रहा हूँ , java 1.7 के साथ कोशिश नहीं की है

बिन / mkdistro.sh -DskipTests -Dmaven.javadoc.opts = '- Xdoclint: -html'


1

गुम @paramऔर @returnटैग को अनदेखा करने के लिए , यह missing डॉक्लिंट समूह को अक्षम करने के लिए पर्याप्त है । इस तरह, javadoc को अभी भी उच्च स्तर और वाक्यविन्यास मुद्दों के लिए जाँच किया जाएगा:

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
        <version>3.0.0</version>
        <configuration>
            <doclint>all,-missing</doclint>
        </configuration>
    </plugin>

ध्यान दें कि यह प्लगइन संस्करण 3.0 या नए के लिए है।


0

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

यहाँ मेरे लिए क्या काम करता है: -

export JAVA_TOOL_OPTIONS=-DadditionalJOption=-Xdoclint:none

और फिर अपने मावेन बिल्ड, किसी भी लिनक्स डिस्ट्रीब्यूशन बिल्ड आदि को शुरू करें। इसके बारे में अच्छी बात यह है कि इसके लिए मावेन कॉन्फिग फाइल मॉडिफिकेशन की आवश्यकता नहीं है - मैं ऐसा नहीं कर सका क्योंकि मेरा उद्देश्य सेंटोस आरपीएम पैकेजों के एक समूह का पुनर्निर्माण करना था , इसलिए वास्तव में गहरे जाओ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.