Maven ไม่ทำงานใน Java 8 เมื่อ Javadoc แท็กไม่สมบูรณ์


312

ตั้งแต่ฉันใช้ Maven ฉันสามารถสร้างและติดตั้งในโครงการที่เก็บในเครื่องของฉันที่มีแท็ก Javadoc ที่ไม่สมบูรณ์ (ตัวอย่างเช่นพารามิเตอร์ขาดหายไป)

อย่างไรก็ตามเนื่องจากฉันย้ายไปยัง Java 8 (1.8.0-ea-b90) Maven นั้นเข้มงวดมากเกี่ยวกับแท็กเอกสารที่หายไปและแสดงข้อผิดพลาด Javadoc จำนวนมากที่เกี่ยวข้องกับปัญหา Javadoc เมื่อฉันพยายามสร้างหรือติดตั้งโครงการที่ Javadoc ไม่ได้ "สมบูรณ์แบบ" บางโครงการที่ฉันพยายามรวบรวมและติดตั้งในพื้นที่เก็บข้อมูลในพื้นที่ของฉันคือโครงการของ บริษัท อื่นซึ่งฉันไม่สามารถควบคุมได้ ดังนั้นการแก้ปัญหาเพียงแก้ไข Javadocs ทั้งหมดในโครงการเหล่านี้ทั้งหมดจึงดูเหมือนจะไม่เป็นไปได้ในสถานการณ์ของฉัน

นี่เป็นส่วนเล็ก ๆ ของผลลัพธ์ที่ฉันเห็นเมื่อฉันดำเนินการ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>

อย่างที่ฉันพูดไปก่อนหน้านี้ทุกอย่างทำงานได้ดีถ้าฉันกลับไปที่ Java 7 อาจเป็นข้อผิดพลาดที่เกี่ยวข้องกับ Maven ที่ทำงานใน Java 8 หรือไม่? ฉันจะทำให้มันทำงานได้อย่างไร (เช่นสามารถสร้าง Javadoc ของโครงการและติดตั้งรหัสในที่เก็บในเครื่องของฉัน) ด้วย Java 8 ฉันได้ทดสอบกับ Maven 3.0.3 และ 3.0.5 ใน OSX แล้ว

UPDATE:

หากฉันเปลี่ยนการกำหนดค่าปลั๊กอิน Javadoc ด้วย<failOnError>false</failOnError>(ขอบคุณ Martin):

<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 ยังไม่ถูกสร้างขึ้น

ส่วนของผลลัพธ์ที่ฉันเห็นในคอนโซลด้วยการกำหนดค่าใหม่นี้คือ:

[ข้อผิดพลาด] MavenReportException: เกิดข้อผิดพลาดขณะสร้างที่เก็บถาวร: รหัสออก: 1 - /Users/....java:18: คำเตือน: ไม่มี @param ... บรรทัดคำสั่งคือ: / Library / Java / Home / bin / javadoc @options @packages

อ้างถึงไฟล์ Javadoc ที่สร้างใน '/ Users / sergioc / Documents / workspaces / heal / minitoolbox / target / apidocs'

at org.apache.maven.plugin.javadoc.AbstractJavadocMojo.executeJavadocCommandLine (AbstractJavadocMojo.java:5043) ที่ org.apache.maven.plugin.javadoc.AbstractJavadocMojo .javadoc.JavadocJar.execute (JavadocJar.java:181) ที่ org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:101) ที่ org.apache.maven.lifecycle.international.execute : 209) ที่ org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:153) ที่ org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:145) ที่ org.apache maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:84) ที่ org.apache.maven.lifecycle.internal.LifecycleModuleBuilderbuildProject (LifecycleModuleBuilder.java:59) ที่ org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild (LifecycleStarter.java:183) ที่ org.apache.maven.lifecycle.internal.LifecycleStarter.exifecycle ที่ org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:320) ที่ org.apache.maven.DefaultMaven.execute (DefaultMaven.java:156) ที่ org.apache.maven.cli.MavenCli.execute (MavenCli.java : 537) ที่ org.apache.maven.cli.MavenCli.doMain (MavenCli.java:196) ที่ org.apache.maven.cli.MavenCli.main (MavenCli.java:141) ที่ sun.reflect.NativeMethodAccessorImpl.invoke0 ( วิธีการเนทีฟ) ที่ sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:57) ที่ sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) ที่ java.lang.reflectMethodวิงวอน (Method.java:491) ที่ org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:290) ที่ org.codehaus.plexus.classworlds.launcher.launch (Launcher.java:230) ที่ org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:409) ที่ org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:352)

วิธีแก้ปัญหาใด ๆ เกี่ยวกับวิธีสร้างแหล่งที่มาติดตั้งโครงการและสร้าง Javadoc JAR ในขั้นตอนเดียวเหมือนกับที่ใช้กับ Java 7


สวัสดี @ 75inchpianist ฉันได้อัปเดตคำถามในความเป็นจริงแล้วพวกเขามีข้อผิดพลาด (แม้ว่าพอข้อผิดพลาดบรรทัดสุดท้ายของข้อผิดพลาดหมายถึงคำเตือนที่น่าแปลกใจที่คุณเห็นในผลลัพธ์ที่สร้างขึ้น) โครงการไม่ได้รับการติดตั้งในพื้นที่เก็บข้อมูลท้องถิ่นของฉันดังนั้นจึงไม่ถือว่าเป็นคำเตือนง่ายๆ :(
Sergio

สำหรับ GoogleJuice: ฉันได้รับข้อผิดพลาด "ข้อผิดพลาด: การใช้ '>'" ไม่ดีเพราะฉันมีลูกศรขนาดใหญ่ในความคิดเห็น JavaDoc
Drew Stephens

1
อาจจะมีประโยชน์สำหรับบางคน: คุณสามารถค้นหาแท็กที่ไม่สมบูรณ์ทั้งหมดนี้ใน IntelliJ ได้โดยเรียกใช้การตรวจสอบ Ctrl + Alt + Shift + i "การประกาศมีปัญหา JavaDoc"
Sergey Ponomarev

1
นี่ไม่ใช่ maven มันเป็นโปรแกรม javadoc ที่มีจำนวน จำกัด ใน Java 8
Thorbjørn Ravn Andersen

คำตอบ:


388

ทางออกที่ดีที่สุดคือการแก้ไขข้อผิดพลาด javadoc หากด้วยเหตุผลบางอย่างที่เป็นไปไม่ได้ (เช่น: สร้างรหัสต้นฉบับอัตโนมัติ) คุณสามารถปิดการตรวจสอบนี้ได้

DocLint เป็นคุณสมบัติใหม่ใน Java 8ซึ่งสรุปได้ดังนี้:

จัดเตรียมวิธีการตรวจสอบข้อผิดพลาดในความคิดเห็น Javadoc ในช่วงต้นของวงจรการพัฒนาและในวิธีที่เชื่อมโยงกลับไปยังซอร์สโค้ดได้ง่าย

สิ่งนี้เปิดใช้งานตามค่าเริ่มต้นและจะเรียกใช้การตรวจสอบจำนวนมากทั้งก่อนที่จะสร้าง Javadocs คุณต้องปิดการทำงานนี้สำหรับ Java 8 ตามที่ระบุในเธรดนี้ คุณจะต้องเพิ่มสิ่งนี้ลงในการกำหนดค่า Maven ของคุณ:

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

สำหรับ maven-javadoc-plugin 3.0.0+: แทนที่

<additionalparam>-Xdoclint:none</additionalparam>

กับ

<doclint>none</doclint>

18
มีวิธีทำให้งานนี้กับ JDK 8 เช่นเดียวกับ JDK 7 หรือไม่? มันล้มเหลวใน JDK 7 เพราะมันjavadocไม่รู้จักตัวเลือกนี้
Feuermurmel

8
ในขณะที่คำตอบนี้เป็นคำถามที่ถามฉันอยากจะแนะนำผู้เยี่ยมชมในอนาคตให้ตรวจสอบคำตอบของ peterh ก่อน: stackoverflow.com/a/34809831/1180785 (คนส่วนใหญ่ที่ตีปัญหานี้จะมีเพียงไม่กี่แห่งเท่านั้นที่จะแก้ไขได้ดังนั้นจึงดีกว่า เพื่อแก้ไขพวกเขามากกว่าปิดการใช้งานตรวจสอบ!)
Dave

8
สำหรับ Maven-Javadoc <doclint>none</doclint>ปลั๊กอินใช้ ดูmaven.apache.org/plugins/maven-javadoc-plugin/ …
coolersport

11
maven-javadoc-plugin 3.0.0 <additionalparam/>ก็ถูกแทนที่ด้วย<additionalOptions/>เช่นกัน ดูproblems.apache.org/jira/browse/MJAVADOC-475
fdelsert

1
ถูกต้อง. ฉันต้องการแจ้งให้ทราบว่าระหว่างการย้ายข้อมูลจาก maven 2 ไปยัง maven 3 อย่าลืมว่าแท็กปลั๊กอินนี้ไม่ควรรวมอยู่ในแท็กการรายงาน แต่โดยตรงไปยัง pluginManagement (pom.xml)
dimeros

97

วิธีที่ง่ายที่สุดในการทำให้สิ่งต่าง ๆ ทำงานได้กับทั้ง java 8 และ java 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
ทางออกที่ดีที่สุดน่าจะเป็นลูกผสมระหว่างโซลูชันของคุณกับ Zapp เดียวที่ให้เสียงร้อง หากคุณปล่อยให้เป็นเช่นนี้คำสั่ง mvn: site จะยังคงทำงานขัดข้อง คุณควรสร้างโปรไฟล์ที่เปิดใช้งานโดย 1.8 jdk ที่ตั้งค่าคุณสมบัติส่วนกลาง
Max Nad

64

นี่เป็นวิธีที่รัดกุมที่สุดที่ฉันทราบเพื่อละเว้นคำเตือน doclint โดยไม่คำนึงถึงรุ่นจาวาที่ใช้ ไม่จำเป็นต้องทำการกำหนดค่าปลั๊กอินซ้ำในหลายโปรไฟล์พร้อมการแก้ไขเล็กน้อย

<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
และที่ควรจะใส่เฉพาะ?
Clearlight

1
@clearlight ทั้งสองbuildและบล็อกด้านบนในระดับผู้เชี่ยวชาญprofiles maven.apache.org/pom.html#Build pom.xml
Oliver Gondža

ขอบคุณ ในที่สุดฉันก็ค้นพบสิ่งนั้น แต่ก็ดีที่มีความเกี่ยวข้องกับคำตอบนี้
Clearlight

38

เพิ่มในส่วนคุณสมบัติส่วนกลางในไฟล์ pom:

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

โซลูชันทั่วไปที่ให้ไว้ในคำตอบอื่น ๆ (การเพิ่มคุณสมบัตินั้นในส่วนปลั๊กอิน) ไม่ทำงานด้วยเหตุผลบางประการ โดยการตั้งค่าทั่วโลกฉันสามารถสร้างขวด javadoc ได้สำเร็จ


1
นี่เป็นทางออกเดียวที่ได้ผลสำหรับฉัน ฉันอ่านคำตอบได้ที่นี่เช่นกัน: blog.joda.org/2014/02/turning-off-doclint-in-jdk-8-javadoc.html
acvcu

37

ทางออกที่สั้นที่สุดที่จะทำงานกับ Java เวอร์ชันใด ๆ :

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

เพียงเพิ่มลงใน POM ของคุณและคุณก็พร้อมที่จะไป

นี้เป็นพื้น@ คำตอบ Ankon ของบวก@ คำตอบของ


สำหรับผู้ใช้ maven-javadoc-plugin 3.0.0:

แทนที่

<additionalparam>-Xdoclint:none</additionalparam>

โดย

<doclint>none</doclint>


มันเป็นทางออกที่ดีที่สุดสำหรับฉัน มันใช้งานได้กับบอท java 7 และ java 8 แต่วิธีการทำงานเป็นเวทย์มนตร์: พารามิเตอร์นี้ "
extraParam

1
@pdem พารามิเตอร์เพิ่มเติมถูกเพิ่มใน Maven ไม่ใช่ปลั๊กอิน Javadoc วิธีนี้ใช้ได้ผลไม่ว่าคุณจะใช้ปลั๊กอินอย่างชัดเจนหรือไม่ก็ตาม
Fred Porciúncula

2
ตั้งแต่ maven-javadoc-plugin 3.0.0 คุณต้องเพิ่ม<additionalJOption>-Xdoclint:none</additionalJOption>หรือ<doclint>none</doclint>ให้ทรัพย์สินของคุณ<properties>
Sergi

ใช่การเพิ่มโปรไฟล์ & การตั้งค่าที่เกี่ยวข้องกับ JDK 8 & gt; <doclint> ไม่มี </doclint> แก้ไขปัญหา มันสร้าง jar javadoc เหมือนกับที่สร้างใน JDK 7 ขอบคุณ
Saurabhcdt

1
คุณสามารถอธิบายได้ไหม: ด้วย maven-javadoc-plugin 3.0.0 และสูงกว่าถ้าฉันเพียงระบุ<doclint>none</doclint>(โดยไม่มีการเปิดใช้งานตามรุ่น JDK) จะยังคงล้มเหลวใน JDK น้อยกว่า 1.8 หรือไม่หรือ maven-javadoc-plugin ตรวจพบโดยอัตโนมัติว่าdoclintตัวเลือกที่ได้รับการสนับสนุนโดยรุ่นปัจจุบันของ Java?
Garret Wilson

31

ฉันไม่คิดว่าการปิด DocLint เป็นวิธีแก้ปัญหาที่ดีอย่างน้อยก็ในระยะยาว มันเป็นสิ่งที่ดีที่ Javadoc ได้กลายเป็นบิตที่เข้มงวดมากขึ้นดังนั้นวิธีการที่เหมาะสมในการแก้ไขปัญหาการสร้างคือการแก้ไขปัญหาพื้นฐาน ใช่ในที่สุดคุณจะต้องแก้ไขไฟล์ซอร์สโค้ดเหล่านั้น

นี่คือสิ่งที่คุณควรระวังก่อนหน้านี้:

  • HTML มีรูปแบบไม่ถูกต้อง (ตัวอย่างเช่นแท็กปิดท้ายที่ขาดหายไปวงเล็บเหลี่ยมที่ไม่ใช้ Escape ฯลฯ )
  • {@link }s ไม่ถูกต้อง (เช่นเดียวกันกับแท็กที่คล้ายกันเช่น@see )
  • @authorค่าไม่ถูกต้อง สิ่งนี้เคยเป็นที่ยอมรับ:@author John <john.doe@mine.com>แต่ก็ไม่ได้เป็นเช่นนั้นอีกต่อไปเพราะวงเล็บเหลี่ยมที่ไม่มีการหลบหนี
  • ตอนนี้ตาราง HTML ใน Javadoc ต้องมีการสรุปหรือคำบรรยาย ดูคำถามนี้สำหรับคำอธิบาย

คุณจะต้องแก้ไขไฟล์ซอร์สโค้ดของคุณและสร้าง Javadoc ของคุณต่อไปจนกว่าจะสามารถสร้างได้โดยไม่เกิดความล้มเหลว ยุ่งยากใช่ แต่โดยส่วนตัวแล้วฉันชอบเมื่อฉันนำโครงการของฉันขึ้นสู่ระดับ DocLint เพราะนั่นหมายความว่าฉันมั่นใจมากขึ้นว่า Javadoc ที่ฉันผลิตนั้นเป็นสิ่งที่ฉันตั้งใจจริง

มีปัญหาแน่นอนถ้าคุณจะสร้าง Javadoc รหัสบางแหล่งที่มาของคุณได้ด้วยตัวคุณเองไม่ได้ผลิตตัวอย่างเช่นเพราะมันมาจากบางส่วนรหัสเครื่องกำเนิดไฟฟ้าเช่นwsimport แปลกที่ออราเคิลไม่ได้เตรียมเครื่องมือของตัวเองสำหรับการปฏิบัติตาม JDK8 ก่อนปล่อย JDK8 จริง ดูเหมือนว่ามันจะไม่ได้รับการแก้ไขจน Java 9 เฉพาะในกรณีนี้ฉันขอแนะนำให้ปิด DocLint ตามเอกสารอื่น ๆ ในหน้านี้


1
เห็นด้วยอย่างสมบูรณ์ที่นี่ซึ่งกล่าวว่าสำหรับโค้ดที่สร้างขึ้นคุณสามารถบอกให้ปลั๊กอินไม่ประมวลผลรหัสในแพ็คเกจที่กำหนดได้โดยการเพิ่มส่วน exclusePackageNames ในส่วนกำหนดค่าปลั๊กอินของ javadoc ดูmaven.apache.org/plugins/maven-javadoc-plugin/examples/ …
Newtopian

@Newtopian จุดดี. อย่างไรก็ตามในกรณีของฉันฉันต้องการรหัสที่สร้างขึ้นจริงwsimportเพื่อเป็นส่วนหนึ่งของ Javadoc
เตอร์

นั่นเป็นเรื่องที่พูดง่ายกว่าทำกันเพราะพวกเราส่วนใหญ่ประสบปัญหาเหล่านี้พยายามที่จะสร้างโค้ดโอเพนซอร์สที่ไม่คุ้นเคยซึ่งมีการพึ่งพา Maven อยู่ที่ไหนสักแห่งและเราไม่รู้ว่ามันทำงานอย่างไรดังนั้นจึงไม่มีวิธีง่ายๆ มีสายตาสั้นมากเกินไปเกี่ยวกับบริบท ผู้คนจำเป็นต้องพูดถึงขอบเขตของคำตอบให้มากขึ้นและให้ข้อมูลที่เฉพาะเจาะจงมากขึ้นเกี่ยวกับวิธีการแก้ไข
Clearlight

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
นี่เป็นจุดสำคัญเนื่องจากการขาดการตั้งค่านี้ในการเปิดใช้งานปลั๊กอินไซต์จะทำให้รีลีส: ทำงานล้มเหลวขณะรีลีส: การเตรียมใช้งานได้ดี มันอาจเป็นปัญหาที่น่ารำคาญในการค้นหาและแก้ไข
Peter N. Steinmetz

หมายเหตุว่าการกำหนดค่าของmaven-javadoc-pluginผ่านทาง<reportPlugins>ส่วนmaven-site-pluginจะไม่แนะนำสำหรับรุ่นล่าสุดของ Maven 3
มาร์ตินHöller

@ MartinHöllerดังนั้นวิธีการแก้ไขข้อผิดพลาดในการเปิดตัว: ดำเนินการขั้นตอนที่เกี่ยวข้องกับ mavene-javadoc-plugin: 3.0.1 ในวิธีที่เหมาะสม?
Vitalii Diravka

@VitaliiDiravka ขึ้นอยู่กับข้อผิดพลาด ... กรุณาถามคำถามแยกต่างหากสำหรับเรื่องนี้
Martin Höller

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ค่าเริ่มต้นคือ


ขอบคุณสำหรับความคิด @ มาร์ติน ด้วยคุณสมบัติดังกล่าวอย่างน้อยฉันสามารถสร้างและติดตั้งโครงการอีกครั้ง แต่ฉันยังขาด java doc jar (ฉันต้องการให้มันปรับใช้กับ Maven central) ฉันอัปเดตคำถามของฉันพร้อมรายละเอียดของการทดสอบ
Sergio

นี่เป็นคำตอบที่เพียงพอที่สุดสำหรับฉัน ฉันแค่ต้องการทดสอบการสร้างในระหว่างการพัฒนาอย่างต่อเนื่องเมื่อ javadocs ยังไม่สมบูรณ์
ZachSand

17

เนื่องจากมันขึ้นอยู่กับเวอร์ชันของ JRE ของคุณซึ่งใช้เพื่อรันคำสั่ง maven ที่คุณอาจไม่ต้องการปิดใช้งาน DocLintตามค่าเริ่มต้นใน pom.xml ของคุณ

ดังนั้นจากบรรทัดคำสั่งคุณสามารถใช้สวิตช์ -Dadditionalparam=-Xdoclint:noneดังนั้นจากบรรทัดคำสั่งคุณสามารถใช้สวิทช์

ตัวอย่าง: mvn clean install -Dadditionalparam=-Xdoclint:none


3
สิ่งนี้มีประโยชน์เป็นพิเศษเพราะคุณสามารถใช้เจนกินส์ได้เช่นกัน ตั้งค่า 'Global MAVEN_OPTS' (ใต้ 'กำหนดค่าระบบ') -Dadditionalparam=-Xdoclint:noneและงานสร้างทั้งหมดของคุณจะทำงานกับ Java 8
วิลฟริดฮิวจ์

mvn org.apache.maven.plugins:maven-javadoc-plugin:3.1.0:jar -DadditionalJOption=-Xdoclint:none- มันใช้งานได้สำหรับฉัน
Roman Khomyshynets

10

ชื่อคุณสมบัติการกำหนดค่ามีการเปลี่ยนแปลงในรุ่นล่าสุดของ maven-javadoc-plugin ซึ่งเป็น 3.0.0

ดังนั้น <additionalparam> จะไม่ทำงาน ดังนั้นเราต้องแก้ไขมันดังต่อไปนี้

   <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/ …
Peter W

แก้ไขเพื่อสร้าง OpenGrok จากแหล่ง github ในวันที่ 19 ก.พ. ควรพูดถึงโปรแกรมปะแก้ของคุณเข้าไปpom.xmlในไดเรกทอรี src / build ของโครงการ ในกรณีของฉันทั้งหมดที่ฉันต้องทำคือค้นหาmaven-javadoc-pluginและจากนั้นไปที่บล็อกอยู่แล้วในปัจจุบันและเพิ่ม<configuration></configuration> <doclint>none</doclint>เป็นเรื่องง่ายเหมือนที่ทุกคนรู้บริบทที่นี่คือฉันพยายามที่จะแก้ไขข้อผิดพลาดที่แตกต่างกันใน OpenGrok และไม่เคยใช้ Maven มาก่อนและไม่ต้องการที่จะรับเงินคืนในโครงการย่อยอื่นเพื่อคิด วิธีใช้การแก้ไขด่วน
Clearlight

4

ฉันต้องการที่จะเพิ่มความเข้าใจในคำตอบอื่น ๆ

ในกรณีของฉัน

-Xdoclint: ไม่มี

ใช้งานไม่ได้

ขอเริ่มต้นด้วยสิ่งนั้นในโครงการของฉันฉันไม่ต้องการ javadoc เลย มีเพียงปลั๊กอินที่จำเป็นบางอย่างเท่านั้นที่มีการพึ่งพาเวลาในการสร้าง

ดังนั้นวิธีที่ง่ายที่สุดในการแก้ปัญหาของฉันคือ:

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

4

ในฐานะของ maven-javadoc-plugin 3.0.0 คุณควรใช้ Java เพิ่มเติมเพื่อตั้งค่าตัวเลือก Javadoc เพิ่มเติมดังนั้นหากคุณต้องการให้ Javadoc ปิดการใช้งาน 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ข้อผิดพลาด
Thorsten Schöning

งานเดิมบน Windows เท่านั้นบน Linux แทน: javadoc: error - Illegal package name: ""-Xdoclint:none" "--allow-script-in-comments""เครื่องหมายคำพูดด้านนอกจะถูกเพิ่มโดยคำสั่งการบันทึกและไม่แสดงบนเชลล์ ฉันเดาว่าปัญหาคือว่าใน Windows javadocจะดำเนินการโดยcmd.exeที่แยกวิเคราะห์หนึ่งสตริงขนาดใหญ่เป็นบรรทัดคำสั่งและแยกadditionalJOptionตามที่ตั้งใจไว้ บน Linux args จะถูกส่งผ่านไปยังกระบวนการโดยตรงและadditionalJOptionถูกส่งผ่านเป็นอาร์กิวเมนต์เดียวซึ่งนำไปสู่ข้อผิดพลาด
Thorsten Schöning

ตามProcess Monitor, cmd.exeไม่ได้ใช้ Java น่าจะเป็นเพียงแค่สร้างบรรทัดคำสั่งขนาดใหญ่หนึ่งบรรทัดและส่งผ่านไปยังCreateProcessเพื่อที่จะได้รับการแยกวิเคราะห์โดย Windows ตามที่ตั้งใจไว้: แยก args ที่ช่องว่างในขณะที่เคารพคำพูด
Thorsten Schöning

3

เพิ่มด้านล่าง

JAVA_TOOL_OPTIONS=-DadditionalJOption=-Xdoclint:none

เข้าสู่งาน Jenkins:

การกำหนดค่า> สภาพแวดล้อมการสร้าง> ตัวแปรสภาพแวดล้อมการฉีดเข้าสู่กระบวนการสร้าง> เนื้อหาคุณสมบัติ

แก้ไขปัญหาการสร้างรหัสผ่าน Jenkins Maven :-)


ใช้งานได้กับ maven-javadoc-plugin 2.4 แต่เริ่มใน 2.5 (และตลอดจนถึง 3.0.0) ทำให้เกิดข้อผิดพลาด: "รหัสออก: 1 - javadoc: ข้อผิดพลาด - ธงไม่ถูกต้อง: -Xdoclint: none" ดังนั้นการแก้ปัญหาจึงเปราะ
Akom

1
เมื่อใช้นี้กับความต้องการของไวยากรณ์ที่จะmvn release:perform mvn release:perform -Darguments="-Dmaven.javadoc.skip=true"
PatS

2

ฉันไม่แน่ใจว่านี้เป็นไปเพื่อช่วยเหลือ แต่แม้ฉันต้องเผชิญกับปัญหาเดียวกันแน่นอนมากเร็ว ๆ นี้กับoozie-4.2.0รุ่น หลังจากอ่านคำตอบข้างต้นฉันเพิ่งเพิ่มตัวเลือก maven ผ่านบรรทัดคำสั่งและมันใช้ได้สำหรับฉัน ดังนั้นเพียงแค่แบ่งปันที่นี่

ฉันใช้ java 1.8.0_77ยังไม่ได้ลองกับ java 1.7

bin / mkdistro.sh -DskipTests -Dmaven.javadoc.opts = '- Xdoclint: -html'


1

ที่จะไม่สนใจที่ขาดหายไป@paramและ@returnแท็กก็พอที่จะปิดการใช้งานกลุ่มmissing doclint ด้วยวิธีนี้ 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

และจากนั้นเริ่มต้น Maven build ของคุณลินุกซ์บิวด์บิวชั่น ฯลฯ สิ่งที่ดีเกี่ยวกับมันที่ไม่ต้องการการแก้ไขไฟล์Maven config - ฉันทำไม่ได้เพราะเป้าหมายของฉันคือการสร้างแพ็คเกจCentos rpm จำนวนมาก ไปลึกจริงๆ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.