Javadoc 태그가 불완전한 경우 Java 8에서 Maven이 작동하지 않습니다


312

Maven을 사용하기 때문에 Javadoc 태그가 불완전한 로컬 리포지토리 프로젝트 (예 : 누락 된 매개 변수)에서 빌드하고 설치할 수있었습니다.

그러나 Java 8 (1.8.0-ea-b90)으로 마이그레이션했기 때문에 Maven은 문서 태그 누락에 대해 절대적으로 엄격하며 Javadoc이 아닌 프로젝트를 빌드하거나 설치하려고 할 때 Javadoc 문제와 관련된 많은 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>

앞에서 말했듯이 Java 7로 돌아 가면 모든 것이 제대로 작동합니다. Java 8에서 실행되는 Maven과 관련된 버그입니까? Java 8에서 어떻게 작동합니까 (예 : 프로젝트의 Javadoc을 빌드하고 로컬 리포지토리에 코드를 설치할 수 있음)? OSX에서 Maven 3.0.3 및 3.0.5로 테스트했습니다.

최신 정보:

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 : 경고 : no @param ... 명령 행 : / Library / Java / Home / bin / javadoc @options @ 패키지

'/ Users / sergioc / Documents / workspaces / heal / minitoolbox / target / apidocs'디렉토리에서 생성 된 Javadoc 파일을 참조하십시오.

org.apache.maven.plugin의 org.apache.maven.plugin.javadoc.AbstractJavadocMojo.executeReport (AbstractJavadocMojo.java:1990)의 org.apache.maven.plugin의 org.apache.maven.plugin.javadoc.AbstractJavadocMojo.executeJavadocCommandLine (AbstractJavadocMojo.java:5043)에서 org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:101)의 org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java의 .javadoc.JavadocJar.execute (JavadocJar.java:181) : 209) org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:153), org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:145) org.apache에 있습니다. org.apache.maven.lifecycle.internal.LifecycleModuleBuilder에서 maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:84).org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild (LifecycleStarter.java:183) org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:161)의 buildProject (LifecycleModuleBuilder.java:59) org.apache.maven.cli.MavenCli.execute (MavenCli.java의 org.apache.maven.DefaultMaven.execute (DefaultMaven.java:156)에서 org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:320)에서 : 537) org.apache.maven.cli.MavenCli.doMain (MavenCli.java:196) at org.apache.maven.cli.MavenCli.main (MavenCli.java:141) at sun.reflect.NativeMethodAccessorImpl.invoke0 ( 기본 메소드) sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:290) org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:230)에서 invoke (Method.java:491) org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:409)에서 org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:352)에서

소스를 빌드하고, 프로젝트를 설치하고, Java 7과 함께 작업 할 때 한 단계로 Javadoc JAR을 생성하는 방법에 대한 해결 방법이 있습니까?


안녕하세요 @ 75inchpianist, 나는 실제로 오류라는 질문을 업데이트했습니다 (놀랍게도 오류의 마지막 줄은 생성 된 출력에서 ​​볼 수 있듯이 경고를 나타냅니다). 이 프로젝트는 로컬 리포지토리에 설치되어 있지 않으므로 간단한 경고로 간주되지 않습니다. (
Sergio

GoogleJuice의 경우 : JavaDoc 주석에 큰 화살표가있어 "오류 : '>'의 잘못된 사용"오류가 발생했습니다.
Drew Stephens

1
어쩌면 누군가에게 유용 할 것입니다 : 검사를 실행하여 IntelliJ 에서이 불완전한 모든 태그를 쉽게 찾을 수 있습니다 Ctrl + Alt + Shift + i "선언에 JavaDoc 문제가 있습니다"
Sergey Ponomarev

1
이것은 자바 8에 많이 엄격한을받은 javadoc의 프로그램, 메이븐되지 않는다
Thorbjørn Ravn 안데르센

답변:


388

가장 좋은 해결책은 javadoc 오류를 수정하는 것입니다. 어떤 이유로 불가능한 경우 (예 : 자동 생성 소스 코드)이 검사를 비활성화 할 수 있습니다.

DocLint는 Java 8의 새로운 기능으로 다음과 같이 요약됩니다.

개발주기 초기에 소스 코드에 쉽게 다시 연결되는 방식으로 Javadoc 주석에서 오류를 감지하는 수단을 제공하십시오.

기본적으로 활성화되어 있으며 Javadoc을 생성하기 전에 많은 검사를 수행합니다. 이 스레드에 지정된 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 7 뿐만 아니라 JDK 8에서도이 작업을 수행 할 수있는 방법이 있습니까? JDK 7 javadoc에서는이 옵션을 모르기 때문에 실패합니다 .
Feuermurmel

8
이 답변이 질문은 여기에 물어 동안, 나는 처음 peterh의 답변을 확인하기 위해 조언 미래 방문자에게 싶습니다 stackoverflow.com/a/34809831/1180785를 (이 문제를 치는 대부분의 사람들은 수정에 장소의 소수를해야합니다, 더 나은 그래서 수표를 비활성화하는 것보다 문제를 해결하는 것입니다!)
Dave

8
maven-javadoc-plugin의 경우을 사용하십시오 <doclint>none</doclint>. maven.apache.org/plugins/maven-javadoc-plugin/…
coolersport

11
또한 maven-javadoc-plugin 3.0.0부터 <additionalparam/>로 대체되었습니다 <additionalOptions/>. issues.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 : site 명령이 여전히 충돌합니다. 글로벌 특성을 설정하는 1.8 jdk에 의해 활성화 된 프로파일을 작성해야합니다.
Max Nad

64

여기에 사용되는 Java 버전에 관계없이 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, 모두 buildprofiles받는다는에서 최상위 블록이다 pom.xml. maven.apache.org/pom.html#Build .
Oliver Gondža

감사. 나는 결국 그것을 발견했지만이 답변과 관련이있는 것이 좋습니다.
clearlight

38

pom 파일의 전역 속성 섹션에 추가하십시오.

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

다른 답변 (플러그인 섹션에 해당 속성 추가)에서 여기에 제공된 일반적인 솔루션은 어떤 이유로 작동하지 않았습니다. 전역으로 설정해야만 javadoc jar를 성공적으로 빌드 할 수 있습니다.


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 's answer + @ zapp 's answer 입니다.


maven-javadoc-plugin 3.0.0 사용자의 경우 :

바꾸다

<additionalparam>-Xdoclint:none</additionalparam>

으로

<doclint>none</doclint>


나를위한 최고의 솔루션입니다. 봇 java 7 및 java 8에서 작동하지만 작동 방식은 일종의 마술입니다. 이 매개 변수 "additionalParam"은 플러그인 javadoc에 어떻게 추가
됩니까?

1
@pdem 추가 매개 변수가 Javadoc 플러그인이 아닌 Maven에 추가됩니다. 이 솔루션은 플러그인을 명시 적으로 사용하는지 여부에 관계없이 작동합니다.
Fred Porciúncula

2
maven-javadoc-plugin 3.0.0부터 다음에 추가 <additionalJOption>-Xdoclint:none</additionalJOption>또는 <doclint>none</doclint>속성을 추가 해야합니다<properties>
Sergi

예, JDK 8 관련 프로필을 추가하고 <doclint> 없음 </ doclint>을 설정하면 문제가 해결됩니다. JDK 7에서 생성 한 것과 동일한 javadoc jar를 생성합니다. 감사합니다.
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 (예 : 누락 된 종료 태그, 이스케이프 처리되지 않은 괄호 등)
  • 유효하지 않은 {@link }s. (와 같은 유사한 태그에도 동일 @see)
  • 유효하지 않은 @author값. 이것은 예전에는 받아 들여지지 @author John <john.doe@mine.com>않았지만 더 이상 이스케이프 처리되지 않은 대괄호 때문에 그렇게 받아 들여지지 않았습니다.
  • Javadoc의 HTML 테이블에 요약 또는 캡션이 필요합니다. 설명 은 이 질문 을 참조하십시오 .

소스 코드 파일을 수정하고 실패없이 빌드 할 수있을 때까지 Javadoc을 계속 빌드하면됩니다. 번거롭지 만 개인적으로 나는 프로젝트를 DocLint 레벨로 올릴 때 좋아한다. 왜냐하면 내가 생산하는 Javadoc이 실제로 내가 의도 한 것임을 확신 할 수 있기 때문이다.

물론 직접 생성하지 않은 일부 소스 코드에서 Javadoc을 생성하는 경우 문제가 있습니다 (예 : wsimport 와 같은 일부 코드 생성기에서 제공됨) . 오라클이 실제로 JDK8을 발표하기 전에 JDK8 준수를위한 자체 툴을 준비하지 않은 것이 이상합니다. Java 9까지는 수정되지 않는 것 같습니다 . 이 특별한 경우에만이 페이지의 다른 곳에 문서화 된 DocLint를 끄는 것이 좋습니다.


1
생성 된 코드의 경우, javadoc 플러그인의 구성 섹션에 excludePackageNames 섹션을 추가하여 플러그인이 지정된 패키지에서 코드를 처리하지 않도록 지시 할 수 있습니다. maven.apache.org/plugins/maven-javadoc-plugin/examples/…
Newtopian

@Newtopian. 좋은 지적. 그러나 필자의 경우 실제로 wsimportJavadoc의 일부가되기 위해 생성 된 코드가 필요했습니다 .
peterh

이러한 문제에 부딪히는 많은 사람들이 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
사이트 플러그인 활성화에이 설정이 없으면 release : prepare가 제대로 작동하는 동안 release : perform이 실패하게되므로 중요한 점입니다. 찾아서 고치는 것은 매우 성가신 문제 일 수 있습니다.
Peter N. Steinmetz

참고 구성하는 maven-javadoc-plugin비아 <reportPlugins>의 부분이 maven-site-plugin되는 권장하지 메이븐 3의 최신 버전
마틴 소리 쳐

@ 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입니다.


@Martin이라는 아이디어에 감사드립니다. 그 속성으로 적어도 프로젝트를 다시 빌드하고 설치할 수는 있지만 여전히 Java doc jar가 누락되었습니다 (Maven central에 배포해야합니다). 실험의 세부 사항으로 질문을 업데이트했습니다.
세르지오

이것은 나에게 가장 충분한 대답이었습니다. javadocs가 여전히 불완전한 진행중인 개발 중에 건물을 테스트하고 싶었습니다.
ZachSand

17

maven 명령을 실행하는 데 사용되는 JRE 버전에 따라 다르므로 사용하지 않으려는 경우 DocLint pom.xml에서 기본적

따라서 명령 줄에서 스위치를 사용할 수 있습니다 -Dadditionalparam=-Xdoclint:none .

예: mvn clean install -Dadditionalparam=-Xdoclint:none


3
Jenkins도 사용할 수 있기 때문에 특히 유용합니다. 'Configure System'에서 'Global MAVEN_OPTS'를 설정하면 -Dadditionalparam=-Xdoclint:none모든 빌드가 Java 8에서 작동합니다.
Wilfred Hughes

mvn org.apache.maven.plugins:maven-javadoc-plugin:3.1.0:jar -DadditionalJOption=-Xdoclint:none-그것은 나를 위해 일했다
Roman Khomyshynets

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/...
피터 W

2 월 19 일 github 소스에서 OpenGrok을 빌드하기 위해 해결되었습니다. 패치는 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부터 additionalJOption 을 사용하여 추가 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>따옴표는 중요합니다. 그렇지 않으면 플러그인이 따옴표를 추가하고 두 개가 아닌 하나의 인수 만 가정하여 wrong args오류가 발생합니다.
Thorsten Schöning

전자는 리눅스에서만 윈도우즈에서만 작동한다 : 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에서 의도 한대로 구문 분석합니다. 인용 부호를 사용하면서 공백으로 인수를 분할합니다.
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 group 을 비활성화하면 충분합니다 . 이런 식으로 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 빌드, 모든 Linux 배포 빌드 등을 시작하십시오. Maven 구성 파일 수정이 필요하지 않다는 좋은 점 -제 목표는 Centos rpm 패키지 를 다시 빌드하는 것이 아니므로 그렇게 할 수 없었습니다. 정말 깊어

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.