컴파일 할 때 모든 클래스 javadoc 주석 (선호 라이브러리 웹 페이지 클래스의 하위 클래스)을 classname=comment
형식의 .properties 파일로 덤프하려고합니다.프로젝트에서 내 Custom Doclet 클래스를 컴파일하고 실행하려면 어떻게해야합니까?
지금까지 내가 가진 :
이- 만들어 도크 렛 클래스는
SiteMapDoclet
클래스가 .properties 파일에 프로젝트의 모든의 javadoc를 스캔하고 덤프 정의- 파일
- 추가 내 pom.xml에 필요한 configs가 작동하도록 설정합니다.
버전 : 자바 1.6.0.21, 메이븐 2.2.1
문제 :
mvn site
반환 :
Embedded error: Error rendering Maven report:
Exit code: 1 - java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
at us.ak.state.revenue.cssd.Personnel.utils.SiteMapDoclet.<clinit>(SiteMapDoclet.java:27)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
나는 그들이 비록 AdditionalDependencies
로 항아리를 설정하려 내 프로젝트의 정상적인 의존성. 또한 bootclasspath의 일부로 필요한 클래스를 기대하는 jar에 경로를 추가하려고 시도했습니다.
내 pom.xml 파일의보고 섹션은 다음과 같습니다
이<reporting>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.9</version>
<reportSets>
<reportSet>
<id>html</id>
<reports>
<report>javadoc</report>
</reports>
</reportSet>
<reportSet>
<id>siteMap</id>
<configuration>
<doclet>
us.ak.state.revenue.cssd.Personnel.utils.SiteMapDoclet
</doclet>
<docletPath>${project.build.outputDirectory}</docletPath>
<destDir>SiteMap</destDir>
<author>false</author>
<useStandardDocletOptions>false</useStandardDocletOptions>
<!-- there has got to be a better way to do this! -->
<!-- how can I fix the CSSD-Web - Base to use a proper manifest file? -->
<bootclasspath>
${bootClassPath};
${env.CLASSPATH};
${m2Repository}/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar;
${m2Repository}/org/apache/wicket/wicket-core/${wicket.version}/wicket-core-${wicket.version}.jar;
${m2Repository}/us/ak/state/revenue/cssd/CSSD-Web/${CSSDWebBase.version}/CSSD-Web-${CSSDWebBase.version}.jar
</bootclasspath>
<additionalDependencies>
<additionalDependency>
<groupId>us.ak.state.revenue.cssd</groupId>
<artifactId>CSSD-Web</artifactId>
<version>${CSSDWebBase.version}</version>
</additionalDependency>
<additionalDependency>
<groupId>org.apache.wicket</groupId>
<artifactId>wicket-core</artifactId>
<version>${wicket.version}</version>
</additionalDependency>
<additionalDependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.16</version>
</additionalDependency>
<additionalDependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.1</version>
</additionalDependency>
</additionalDependencies>
<name>SiteMapDoclet</name>
<description>Page Descriptions for SiteMap generation</description>
</configuration>
<reports>
<report>javadoc</report>
</reports>
</reportSet>
</reportSets>
</plugin>
</plugins>
</reporting>
가 참고 :
${m2Repository}
이
이 ${env.USERPROFILE}/.m2/repository
${bootClassPath}
로 정의, 높은 파일을 백업 속성으로 정의가 정의 파일보다 높은 속성 인
은 ${env.JRE_6_HOME}\lib\rt.jar;${env.JAVA_HOME}\lib\tools.jar;
NoClassDefFoundError
을 어떻게 해결할 수 있습니까?
compile
다음에 package
다음에 정상 빌드 프로세스의 일부로 사이트 맵 파일을 실행하고 싶습니다.
build
에 이것을 정의 해 보았지만 javadoc이 생성되지 않아 내 도큐멘트에서 로깅 출력이 표시되지 않습니다.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.9</version>
<executions>
<execution>
<id>build-siteMap-Descriptions</id>
<phase>process-classes</phase>
</execution>
</executions>
</plugin>
UPDATE : @ ben75의 제안에
감사합니다. 내 pom.xml의 <reporting>
섹션을 삭제했으며 빌드하는 동안 프로세스가 실패했습니다. 나는 <goals>
을 추가하고 <reporting>
에서 <configuration>
섹션을 복사했습니다.
여전히 NoClassDefFoundError
을 던지고 있지만, 내가 원하는 곳에서 빌드하고 있습니다.추가 시도 :
<includeDependencySources>true</includeDependencySources>
<dependencySourceIncludes>
<dependencySourceInclude>org.apache.wicket:wicket-core:*</dependencySourceInclude>
<dependencySourceInclude>org.apache.commons.logging:*</dependencySourceInclude>
<dependencySourceInclude>us.ak.state.revenue.cssd:CSSD-Web:*</dependencySourceInclude>
</dependencySourceIncludes>
구성 섹션에는 있지만 작동하지 않습니다.
'NoNoClassDefFoundError'하지만, 이제는'mvn 꾸러미'에 담았습니다 :) 단지''을 복사하여보고해야합니다. –
Raystorm