2014-07-03 2 views
6

Я пытаюсь создать агрегатный 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 оба не работают одинаково.

+0

Пожалуйста, обратите внимание на отправку разрешения в качестве ответа, чтобы вы могли отметить его как принятое; этот вопрос в настоящее время фигурирует в списке оставшихся без ответа вопросов, и это не подходит. – muffin

+0

Конечно, я не знал, что могу это сделать. – alexddupree

ответ

1

Исправлено: В компиляторе javadoc имеется код bug и 1.6 и 1.7, где аннотации, в которых нет банок, бросают NPE. Компилятор 1.8 javadoc работает, однако я все еще получаю ошибки, поскольку у меня не было правильной банки. Мне пришлось посмотреть несколько разных попов, поскольку в одном из моих модулей была записана другая библиотека спящего режима.

Окончательные результаты: Когда я изменил эту библиотеку на стандарт, один maven не смог скомпилировать, но javadoc: aggregate будет работать нормально. Переключение на версию в моем модуле тоже не работало. В итоге мне пришлось удалить модуль из моей сборки javadoc, используя this. Это не имело большого значения, поскольку это был экспериментальный модуль, но если бы мне это было нужно, я бы просто добавил профиль, который позволил мне изменить версию на javadoc run.

Надеюсь, что никто не застрянет на этом снова, как я. :)

Смежные вопросы