Я пытаюсь создать агрегатный javadoc для проекта с несколькими модулями. Проект компилируется с помощью mvn install -DskipTests
(я не запускаю тесты на своей машине). Когда я запускаю mvn validate javadoc:javadoc
, он работает и компилирует весь javadoc в каждом каталоге modules \ target \ apidocs. Затем, когда я запускаю либо mvn validate javadoc:javadoc javadoc:aggregate
, либо mvn validate javadoc:aggregate
не работает частично с примерно 1200 строк ошибок. Некоторые примеры типов:Maven javadoc: javadoc работает, но javadoc: aggregate вызывает ошибки, которые выглядят как ошибки компилятора
Failed to execute goal org.apache.maven.plugins:maven-javadoc-plugin:2.9.1:aggregate (default-cli) on project commons-superpom: An error has occurred in JavaDocs report generation:
[ERROR] Exit code: 1 - C:\workspaces\win\tfs\****\Foo.java:21: type org.springframework.context.ApplicationListener does not take parameters
[ERROR] public class Foo implements ApplicationContextAware, ApplicationListener<ContextRefreshedEvent> {
[ERROR]^
.
.
.
C:\workspaces\win\tfs\****\test\Bar.java:52: cannot find symbol
[ERROR] symbol : class PostInsertEvent
[ERROR] location: class com.Barclass
[ERROR] public void BarFunct(PostInsertEvent event) {
[ERROR]^
[ERROR] C:java.lang.NullPointerException
[ERROR] at com.sun.tools.javadoc.TypeMaker.getType(TypeMaker.java:67)
[ERROR] at com.sun.tools.javadoc.TypeMaker.getType(TypeMaker.java:29)
[ERROR] at com.sun.tools.javadoc.ClassDocImpl.superclassType(ClassDocImpl.java:439)
[ERROR] at com.sun.tools.doclets.internal.toolkit.util.Util.getAllInterfaces(Util.java:386)
[ERROR] at com.sun.tools.doclets.internal.toolkit.util.Util.getAllInterfaces(Util.java:424)
[ERROR] at com.sun.tools.doclets.internal.toolkit.util.ClassTree.processType(ClassTree.java:162)
[ERROR] at com.sun.tools.doclets.internal.toolkit.util.ClassTree.buildTree(ClassTree.java:114)
[ERROR] at com.sun.tools.doclets.internal.toolkit.util.ClassTree.<init>(ClassTree.java:73)
[ERROR] at com.sun.tools.doclets.internal.toolkit.AbstractDoclet.startGeneration(AbstractDoclet.java:104)
[ERROR] at com.sun.tools.doclets.internal.toolkit.AbstractDoclet.start(AbstractDoclet.java:64)
[ERROR] at com.sun.tools.doclets.formats.html.HtmlDoclet.start(HtmlDoclet.java:42)
[ERROR] at com.sun.tools.doclets.standard.Standard.start(Standard.java:23)
[ERROR] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[ERROR] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
[ERROR] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
[ERROR] at java.lang.reflect.Method.invoke(Method.java:597)
[ERROR] at com.sun.tools.javadoc.DocletInvoker.invoke(DocletInvoker.java:269)
[ERROR] at com.sun.tools.javadoc.DocletInvoker.start(DocletInvoker.java:143)
[ERROR] at com.sun.tools.javadoc.Start.parseAndExecute(Start.java:340)
[ERROR] at com.sun.tools.javadoc.Start.begin(Start.java:128)
[ERROR] at com.sun.tools.javadoc.Main.execute(Main.java:41)
[ERROR] at com.sun.tools.javadoc.Main.main(Main.java:31)
После того, как выходит из строя все, что осталось в/целевом каталоге рядом с моим родительским pom.xml является 2 файла 1 является Javadoc-пачке опции, которая содержит файл XML:
<?xml version="1.0" encoding="UTF-8"?>
<javadocOptions>
<docletArtifacts>
<docletArtifact />
</docletArtifacts>
<tagletArtifacts>
<tagletArtifact />
</tagletArtifacts>
<excludePackageNames>
<excludePackageName>org.foobar.*</excludePackageName>
</excludePackageNames>
<javadocResourcesDirectory>src/main/javadoc</javadocResourcesDirectory>
</javadocOptions>
, а второй - сайт, содержащий файл apidocs, который содержит 3 файла javadoc.bat, параметры и пакеты. Они содержат то, что, по-видимому, содержит пакетный скрипт для запуска javadoc.exe с этими параметрами и в этих пакетах.
Первая ошибка, которую я скопировал, прямо неправильная. ApplicationListener параметризуется и может принимать ContextRefreshedEvent за весеннюю документацию. PostInsertEvent правильно импортируется также во вторую ошибку. Я не знаю, где происходит NullPointerException.
Моя конфигурация плагин для Javadoc: агрегат следующим образом:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>${maven-javadoc-plugin.version}</version>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>aggregate</goal>
</goals>
</execution>
</executions>
<configuration>
<excludePackageNames>org.hibernate.*;org.spring.*<-!-- ;com.***.hibernate.audit --></excludePackageNames>
<verbose>true</verbose>
<fork>true</fork>
<showDeprecation>true</showDeprecation>
<showWarnings>true</showWarnings>
<source>${java.source.version}</source>
<target>${java.target.version}</target>
<compilerVersion>${java.source.version}</compilerVersion>
<compilerArgument>-Xlint:all</compilerArgument>
<minmemory>128m</minmemory>
<maxmem>512m</maxmem>
<encoding>${project.build.sourceEncoding}</encoding>
<additionalparam>
-charset UTF-8
-docencoding UTF-8
-version
-author
-breakiterator
-linksource
-sourcetab 4
-windowtitle "${project.name} ${project.version} API Reference"
-doctitle "${project.name} ${project.version} API Reference"
-bottom "Copyright ${project.inceptionYear}-Present ${project.organization.name}. All Rights Reserved."
-link http://java.sun.com/javase/6/docs/api/
-link http://jsr311.java.net/nonav/releases/1.1
</additionalparam>
</configuration>
</plugin>
Если исключить комментируемой пакет, то сборка работает нормально. Если, однако, я исключаю все файлы в пакете, а не пакет, тогда он вылетает с очень похожими ошибками. Я могу генерировать javadoc просто отлично в затмении. Я могу остановить исключение nullpointer, если отредактировать файл опций, созданный после отказа использовать 3.3.2.GA/hibernate-core-3.3.2.GA.jar вместо hibernate-core-4.1.8.Final.jar, а затем запустить файл bat. Это создает полный агрегатный сайт javadoc, однако в запуске есть несколько ошибок, связанных с @Typedef. Javadoc 1.7_60 и 1.6_45 оба не работают одинаково.
Пожалуйста, обратите внимание на отправку разрешения в качестве ответа, чтобы вы могли отметить его как принятое; этот вопрос в настоящее время фигурирует в списке оставшихся без ответа вопросов, и это не подходит. – muffin
Конечно, я не знал, что могу это сделать. – alexddupree