Как я могу сделать из класса Ant Javadoc исключение двух файлов? - PullRequest
9 голосов
/ 19 мая 2011

Я документирую некоторые веб-сервисы Java и поддерживаемые типы данных. Есть две службы, которые я не хочу документировать. Как правильно исключить небольшое количество файлов из задачи Ant javadoc?

Я пробовал несколько итераций, используя файлы или наборы файлов, вложенные в sourcepath или sourcefiles с различными комбинациями include и exclude.

Базовая цель, которую я правильно определил, документирует все мои веб-сервисы:

    <target name="javadoc.webservices" description="Generate the documentation for companyproject webservices">
    <delete dir="docs/webservices" failonerror="true"/>
    <mkdir dir="docs/webservices"/>
    <javadoc packagenames="com.company.project.webservices,com.company.project.models.*"
             defaultexcludes="yes"
             destdir="docs/webservices"
             author="true"
             version="true"
             use="true"
             windowtitle="company project Webservices">
        <doctitle><![CDATA[<h1>company project Webservices</h1>]]></doctitle>
        <bottom><![CDATA[<i>Copyright &#169; 2011 company Corp. All Rights Reserved.</i>]]></bottom>
        <sourcepath>
            <path location="companyproject-ejb/src/java"/>
            <path location="companyproject-models/src"/>
        </sourcepath>
        <classpath>
            <path refid="companyproject-models.module.classpath"/>
            <path refid="companyproject-ejb.module.classpath"/>
            <pathelement location="${companyproject-ejb.output.dir}"/>
        </classpath>
    </javadoc>
</target>

Некоторые варианты, которые я пробовал, включают:

<sourcefiles>
            <fileset dir="companyproject-ejb/src/java">
                <include name="**/*.java"/>
                <exclude name="**/*IntegrationTestWS*, **/*NhinInterfaceWS*"/>
            </fileset>
        </sourcefiles>

Это ошибки с javadoc.exe CreateProcess error=87, The parameter is incorrect

<sourcepath>
            <fileset dir="companyproject-ejb/src/java">
                <include name="**/*.java"/>
                <exclude name="**/*IntegrationTestWS*, **/*NhinInterfaceWS*"/>
            </fileset>
        </sourcepath>

Та же ошибка, что и у исходных файлов, но в ней много сообщений о skipping <somefile> since it is no directory.

Я пробовал похожие варианты, используя <files> вместо <fileset>.

Я думаю, что мне не хватает базового понимания того, как включает / исключает работы. Спасибо за вашу помощь!

AlexR не совсем понял, но подошел ближе. Я удалил <sourcepath> и добавил

<fileset dir="./Companyproject-ejb/src/java/">
<include name="com/Company/project/webservices/*"/>
<exclude name="**/IntegrationTestWS*"/>
<exclude name="**/NhinInterfaceWS*"/>
</fileset>
<packageset dir="./Companyproject-models/src/">
    <include name="com/Company/project/models/**"/>
</packageset>

Наличие только набора файлов привело к тому, что javadoc пожаловался, что не может найти никаких пакетов. Packageset ведет себя как dirset, поэтому он не может исключать отдельные файлы, только каталоги. В этом случае мне удалось определить набор пакетов для одного набора документов и набор файлов для ограниченного набора и обойти его.

Ответы [ 2 ]

6 голосов
/ 19 мая 2011

<fileset dir="src" defaultexcludes="yes">
  <include name="com/dummy/test/**"/>
  <exclude name="com/dummy/test/doc-files/**"/>
</fileset>

..................

Я думаю, что ваша ошибка - это "sourcefiles" и "sourcepath"теги.Попробуйте удалить их.Для получения дополнительной информации посмотрите здесь: http://ant.apache.org/manual/Tasks/javadoc.html

Удачи!

2 голосов
/ 29 октября 2015

Просто возникла та же проблема и немного покопался в man javadoc, чтобы прийти к выводу, что решения не существует, за исключением обходного пути, который случился в случае OP. Тем не менее, я хотел бы документировать то, что я прочитал из документов.

Задача Ant javadoc - это всего лишь оболочка вокруг javadoc Java, поэтому документация последнего применима. В частности, javadoc, похоже, имеет две четко разделенные концепции генерации документации:

  1. пакеты документов
  2. документ отдельных классов

Для (1) мы указываем имена пакетов, такие как my.nice.package и -sourcepath, чтобы помочь javadoc найти эти пакеты. Используя ant, имена можно указывать либо как packagenames, либо как packageset, где последний преобразует имена путей в имена пакетов (от косой черты до точки).

Для (2) мы указываем пути к файлам, возможно, с подстановочными знаками. Затем каждый отдельный файл документируется. С помощью ant это делается с помощью вложенного fileset, что позволяет исключать файлы.

Теперь кажется, что две вещи не очень хорошо сочетаются в javadoc.

a) При документировании пакетов нет возможности исключать отдельные файлы.

b) При документировании отдельных файлов пакеты не документируются, что приводит к сообщениям об ошибках о неправильных ссылках на имена пакетов при использовании {@link my.package}.

Поиск Документирование пакетов и классов в man javadoc, чтобы увидеть, где я читаю этот фрор.

Это десятилетняя проблема , похоже: - (

...