maven-site 플러그인 3.3 java.lang.ClassNotFoundException : org.apache.maven.doxia.siterenderer.DocumentContent


80

오늘 밤부터 maven 사이트 3.3 플러그인이 작동하지 않습니다.

로컬 저장소를 삭제하려고하지만 변경 사항은 없습니다. Maven 3.3.9 자바 1.8

사이트 플러그인에 대해 pom에 정의 된 구성 또는 종속성 없음

[WARNING] Error injecting: org.apache.maven.report.projectinfo.CiManagementReport
java.lang.NoClassDefFoundError: org/apache/maven/doxia/siterenderer/DocumentContent

답변:


114

빌드 중에도이 문제가 발생하기 시작했습니다. 무엇 나를 위해 일한 것은 구체적으로 정의하는 것이었다 maven-site-plugin과를 maven-project-info-reports-plugin치어의 버전 번호와 함께.

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-site-plugin</artifactId>
  <version>3.7.1</version>
</plugin>
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-project-info-reports-plugin</artifactId>
  <version>3.0.0</version>
</plugin>

5
감사합니다. pom에 버전 2.7의 maven-project-info-reports-plugin을 추가하면 이제 괜찮습니다.
timmy otool

나를 위해 일 했어! 감사.
user577736

기록을 위해 : build / plugins에 추가해야합니다.
Balazs Kelemen

58

이는 maven-project-info-reports-plugin이 3.0.0으로 업데이트되고 doxia-site-renderer 1.8 (이 클래스는 org.apache.maven.doxia.siterenderer.DocumentContent가 있음)에 의존하지만 maven-site로 인해 발생합니다. -plugin : 3.3은 doxia-site-renderer : 1.4에 의존합니다 (그리고 org.apache.maven.doxia.siterenderer.DocumentContent가 없습니다)

보고 부분에서 특정 maven-project-info-reports-plugin 버전을 지정할 수 있습니다.

<reporting>
        <plugins>           
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-project-info-reports-plugin</artifactId>
                <version>2.9</version>
            </plugin>           
        </plugins>    
    </reporting>

또는 maven-site-plugin을 다음과 같이 최신 3.7.1로 지정할 수 있습니다.

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-site-plugin</artifactId>
    <version>3.7.1</version>
</plugin>

pom의 빌드 부분에서


이것은 실제로 진짜 원인입니다. 업데이트를 유발 한 원인이 무엇인지 (또는 더 나은 사람) 궁금합니다. Maven은이 정보를 어디서 얻습니까?
ChristopherS

1
@mbreck 예, 모든 pom에 구성을 추가해야합니다.
Changhua

maven-site-plugin 버전이 작동하려면 프로젝트 플러그인 섹션에 지정되어야합니다. "신규"보고서 섹션은 저를 많이 혼란스럽게하고 중복 된 것 같습니다. 나를 위해 maven은 요즘 사용할 수 없습니다.
Wolfgang Fahl

이것은 나를 위해 완벽하게 작동했습니다. 나는 정의 maven-checkstyle-plugin (3.0.0)maven-project-info-reports-plugin (2.9)에서 <reporting>의 섹션pom.xml
user2490003

1
내가 받는다는-사이트 플러그인 v3.7.1을 사용하는 경우에도 만 받는다는 프로젝트 - 정보 - 보고서 - 플러그인 V2.9로 다운 그레이드 후 나를 위해 일한
Elayamathy

11

maven 사이트 플러그인의 버전도 빌드 섹션에서 명시 적으로 설정해야합니다. 다음은 그 예입니다.

<reporting>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-project-info-reports-plugin</artifactId>
            <version>3.0.0</version>
            <reportSets>
                <reportSet>
                    <reports>
                        <report>index</report>
                        <report>licenses</report>
                        <report>dependency-info</report>
                    </reports>
                </reportSet>
            </reportSets>
        </plugin>
    </plugins>
</reporting>

<build>
    <plugins>
        <!-- Part of Maven - specified version explicitly for compatibility
             with the maven-project-info-reports-plugin 3.0.0-->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-site-plugin</artifactId>
            <version>3.7.1</version>
        </plugin>
    </plugins>
</build>

2
감사합니다! Maven의 시작 가이드를 따르고 "mvn 사이트"를 실행하는 동안 오류가 발생했습니다. 내 pom.xml에 스 니펫을 추가하면 이제 명령이 작동합니다.
AbstractVoid

1
@WallTearer가 정확히 그랬습니다. 콘솔이나 Eclipse에서 입력하는 자습서에 따라 다른 동작이 있는지 모르겠습니다 (추측해서는 안됩니다). 어쨌든 사용자 가이드를 업데이트해야한다고 생각합니다.
foxTox

TheJeff는 남자입니다. 나는 그것이 나를 위해 일하게 만든 것이 <build><reporting>분리 라고 생각합니다 .
javabeangrinder


1

더 많은 정보를 추가해야합니다 (BTW를 반대하지 않았습니다).

IIRC; 수명주기 단계에 바인딩 된 플러그인의 버전을 지정하지 않으면 최신 버전이 제공됩니다.

시험:

  • 최신 버전의 maven- 3.5.4로 업그레이드 ATOW
  • mvn help:effective-pom실제로 해결되는 버전 실행 및 확인-CI의 이전 로그가 있거나 비교할 위치 ..
  • 섹션 에서 maven-site-plugin버전을 명시 적으로 설정pluginManagement
  • 종속성 추가 maven-site-plugin(아래 참조)

org/apache/maven/doxia/siterenderer/DocumentContent다음에서 찾을 수 있습니다 doxia-site-renderer.

    <dependency>
        <groupId>org.apache.maven.doxia</groupId>
        <artifactId>doxia-site-renderer</artifactId>
        <version>1.8.1</version>
    </dependency>

maven-site-plugin의 버전을 (부수적으로) 사용했던 것으로 명시 적으로 설정하면 작동합니다.


편집 : maven 플러그인 빌드 테스트에서 비슷한 문제를 쫓고 maven-site-plugin있었고에서 사용하는 통합 pom에서 버전 (3.7.1 ATOW)을 명시 적으로 설정 maven-invoker-plugin하는 것이 저에게 효과적 이었습니다.


1

또한 오늘 일부 빌드 작업에서이 오류가 발생했습니다. 위에서 제안한 수정은 maven-site-plugin에 대한 구체적인 종속성을 추가하여 작동하며이 문제를 수정합니다.

그러나 그것이 나를 위해 강조한 것은 내가 mvn 사이트 목표를 실행하고 있다는 사실이었습니다. 이는 우리가 실행 중이라는 것을 몰랐고 실제로 필요하지 않습니다.

내 수정 사항은 내 mvn arg에서 사이트 목표를 제거하는 것이 었습니다. 사이트가 실제로 매우 유용하지만 우리가 생성하고 있다는 것을 결코 알지 못했고 어디에도 게시하지 않았으며 어쨌든 실제로 모든 빌드를 삭제했습니다.


1

Changhua의 조언을 따르고 maven-project-info-reports-plugin을 버전 3.0.0으로 정의하고 maven-site-plugin을 3.7.1로 내 pom 파일에 정의하려고 시도했지만 maven 사이트가 여전히 버전 3.3에서 가져옴 내가 설정 한 방법에 관계없이 maven-site-plugin의.

마침내 내 문제가 프로젝트 구조와 관련이 있다는 것을 깨달았습니다. 우리는 maven-site-plugin 의존성을 정의하고있는 부모 pom을 가지고 있는데,이 의존성은 자식 poms에 의해 상속되었습니다. 그러나 빌드 pom 파일은 분리되어 있고 maven-site-plugin을 전혀 정의하지 않았기 때문에 maven이 3.3 버전을 자체적으로 가져올 수있었습니다. 빌드 pom 파일에 maven-site-plugin 종속성 (버전 3.7.1)을 추가하여 이제 빌드 pom 파일과 상위 pom 파일에 모두 존재하며 이제 빌드가 버전 3.7.1을 올바르게 사용하고 있습니다. 다시 지나가고 있습니다.


1

pom.xml의 다음 버전이 문제를 해결했습니다.

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-site-plugin</artifactId>
                <version>3.7</version>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-project-info-reports-plugin</artifactId>
                <version>2.9</version>
            </plugin>
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.