programing

Maven을 사용할 때 보다 엄격한 Java 8 Javadoc을 사용하는 방법

nicescript 2022. 10. 10. 18:44
반응형

Maven을 사용할 때 보다 엄격한 Java 8 Javadoc을 사용하는 방법

JDK8이 Javadoc에 대해 훨씬 더 엄격하다는 것을 금방 알게 될 것입니다(기본값).(link - 마지막 글머리 기호 참조)

Javadoc을 생성하지 않으면 당연히 문제가 발생하지 않지만, Maven 릴리스 프로세스나 CI 빌드 등은 JDK7에서 정상적으로 동작하던 곳에서 갑자기 실패합니다.이제 Javadoc 도구의 종료 값을 확인하는 모든 작업이 실패합니다.JDK8 Javadoc은 다음과 같은 측면에서도 보다 상세하게 설명할 수 있습니다.warningsJDK7과는 비교가 안 됩니다.지금 얘기하고 있는 건errors!

이 질문은 그것에 대해 무엇을 해야 하는지에 대한 제안을 수집하기 위해 존재한다.가장 좋은 접근법은 무엇입니까?이러한 에러는, 소스코드 파일에 있는 모든 에러에 대해 수정이 필요합니까?코드 베이스가 크면 많은 작업이 필요할 수 있습니다.그 밖에 어떤 옵션이 있습니까?

또, 이전에는 통용되지 않았던 현재의 실패에 대한 코멘트로 코멘트를 하는 것도 환영입니다.

지금 실패한 공포 이야기

wsimport 툴

wsimporttool은 웹 서비스 소비자를 생성하기 위한 코드 생성기입니다.JDK에 포함되어 있습니다.를 사용해도wsimport그래도 JDK8의 javadoc 컴파일러로 컴파일할 수 없는 소스 코드를 생성합니다.

@author 태그

3~4년 된 소스 코드 파일을 열어보니

/**
 * My very best class
 * @author John <john.doe@mine.com> 
 */

이 문제는 < 문자 때문에 발생합니다.엄밀히 말하면 이것은 정당하지만, 그다지 용서할 수 있는 것은 아니다.

HTML 테이블

Javadoc의 HTML 테이블다음 유효한 HTML을 고려하십시오.

/**
 *
 * <table>
 *   <tr>
 *      <td>Col1</td><td>Col2</td><td>Col3</td>
 *   </tr>
 * </table>
 */

에러 메시지와 함께 실패합니다.no summary or caption for table한 가지 빠른 해결책은 다음과 같습니다.

/**
 *
 * <table summary="">
 *   <tr>
 *      <td>Col1</td><td>Col2</td><td>Col3</td>
 *   </tr>
 * </table>
 */

근데 왜 이게 자바독 툴의 'Stop-the-World' 에러인가?

더 명백한 이유로 실패한 것들

  1. 유효하지 않은 링크(예:{@link notexist}
  2. HTML 형식이 잘못되었습니다(예:always returns <code>true<code> if ...

갱신하다

링크:

Stephen Colebourne의 주제대한 훌륭한 블로그.

현재 Maven을 사용할 때 보다 엄격한 Java 8 Javadoc을 처리하는 가장 쉬운 방법은 비활성화하는 것입니다.

파라미터 이후-Xdoclint:noneJava 8에만 존재합니다.이 파라미터를 정의하면 다른 Java의 빌드가 해제됩니다.이를 방지하기 위해 Java 8에서만 활성화되는 프로파일을 생성하여 Java 버전에 관계없이 솔루션이 작동하도록 할 수 있습니다.

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

POM에 추가만 하면 됩니다.


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

교체하다

<additionalparam>-Xdoclint:none</additionalparam>

타고

<doclint>none</doclint>

@banterCZ 감사합니다!

maven javadoc을 할 수 .failOnError에러가 , 하지 않게 옵션.

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-javadoc-plugin</artifactId>
  <configuration>
    <failOnError>false</failOnError>
  </configuration>
</plugin>

또는 다음과 같은 방법으로 strict html 옵션을 완전히 비활성화할 수 있습니다.

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

자세한 내용은 이쪽.

maven-javadoc-plugin 버전 3.0.0 이후 doclint는 전용 XML 태그를 통해 구성됩니다.

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

에 대해서는, 을해 주세요.no summary or caption for table 를 사용합니다.<table summary="">더 이상 작동하지 않습니다.이라면 '어디로 할까요?'를 .<caption>다음과 같이 테이블에 요소를 배치합니다.

<table>
    <caption>Examples</caption>
    ...
</table>

이게 누군가 도움이 됐으면 좋겠네요이걸 알기까지 시간이 좀 걸렸어요.

나는 @ThiagoPorciuncula의 솔루션을 좋아하지만, 그것은 나에게 충분치 않았다.

플러그인은 javadoc 플러그인이 .additionalparam프로파일에 의해 덮어쓰기되지 않은 세트입니다.에 나는 다음과 같이 수 없었다.

  • 를 설정하다disableDoclint기본적으로 비어 있는 속성입니다.
  • java > 의 는, java > = 8 을 합니다.disableDoclint 가 되는 -Xdoclint:none
  • ${disableDoclint} additionalparammaven-javadoc-plugin.

이것은 장황하지만 잘 작동하는 것처럼 보인다.

<properties>
    <!-- set empty property -->
    <disableDoclint></disableDoclint>
</properties>
<profiles>
    <profile>
        <id>disable-java8-doclint</id>
        <activation>
            <jdk>[1.8,)</jdk>
        </activation>
        <properties>
            <!-- set property if >= java 8 -->
            <disableDoclint>-Xdoclint:none</disableDoclint>
        </properties>
    </profile>
    ...
</profiles>

로는 선택 인 래래옵옵 then then then then then 。${disableDoclint} the variable in 수 variable 。additionalparam이미 정의한 섹션입니다.

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-javadoc-plugin</artifactId>
    <executions>
        <execution>
            <goals>
                <goal>jar</goal>
            </goals>
            <configuration>
                <showPackage>false</showPackage>
                <additionalparam>-tag inheritDoc:X ${disableDoclint}</additionalparam>
            </configuration>
        </execution>
    </executions>
    <configuration>
        <showPackage>false</showPackage>
        <bottom>This documentation content is licensed...</bottom>
        <additionalparam>-tag inheritDoc:X ${disableDoclint}</additionalparam>
    </configuration>
</plugin>

Java 8에서는 동작하지만 Java 7에서는 구문 오류가 발생하지 않습니다.우후!

언급URL : https://stackoverflow.com/questions/22528767/how-to-work-around-the-stricter-java-8-javadoc-when-using-maven

반응형