Знаток javadoc плагин - как я могу включать только определенные классы?

Чтобы проверить, ли o экземпляр str или какой-либо подкласс str, используйте isinstance (это было бы "каноническим" путем):

if isinstance(o, str):

, Чтобы проверить, точно ли тип o str (исключают подклассы):

if type(o) is str:

следующее также работает и может быть полезным в некоторых случаях:

if issubclass(type(o), str):

См. Встроенные функции в Справочном руководстве по библиотеке Python для релевантной информации.

Еще одно примечание: в этом случае при использовании python 2 можно на самом деле хотеть использовать:

if isinstance(o, basestring):

, потому что это также поймает строки Unicode ( unicode не подкласс [1 111]; и str и unicode подклассы [1 122] basestring ). Обратите внимание, что basestring больше не существует в python 3, где существует строгое разделение из строк ( str ) и двоичные данные ( bytes ).

, С другой стороны isinstance принимает кортеж классов. Это возвратит True, если x будет экземпляром какого-либо подкласса какого-либо из (str, unicode):

if isinstance(o, (str, unicode)):

18
задан Rich Seller 30 July 2009 в 08:08
поделиться

3 ответа

В конце я использовал параметр конфигурации sourcepath , чтобы указать два пакета, содержащих классы, которые я хотел в Javadoc, и дал классы в тех пакетах, которые я не хотел Javadoc доступ по умолчанию. Установка для параметра конфигурации show значения public позволила мне выбрать, для каких классов был создан документ Javadoc, установив там доступ для общего доступа. Полная конфигурация ниже:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-javadoc-plugin</artifactId>
    <configuration>
        <links>
            <link>http://java.sun.com/j2se/1.5.0/docs/api/</link>
        </links>
        <source>1.5</source>
        <show>public</show>
        <doctitle>Foo API</doctitle>
        <title>Foo API</title>
        <bottom><![CDATA[Copyright notice]]></bottom>
        <sourcepath>${basedir}/src/main/java/com/foo/api;${basedir}/src/main/java/com/bar/api</sourcepath>
    </configuration>
</plugin>

Однако это, по сути, обходной путь, и я полностью согласен с комментарием shek, что это должно быть улучшением против maven-javadoc-plugin, поскольку он поддерживается утилитой javadoc. http://jira.codehaus.org/browse/MJAVADOC

5
ответ дан 21 October 2019 в 05:35
поделиться

Используя maven-javadoc-plugin , вы не можете указать конкретные классы java (хотя вы можете это сделать с помощью утилиты javadoc, см. Ниже). Однако с помощью параметра конфигурации sourcepath для цели javadoc: javadoc вы можете настроить определенные пакеты. Пример этого:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-javadoc-plugin</artifactId>
    <version>2.5</version>
    <configuration>
        <charset>UTF-8</charset>
        <docencoding>UTF-8</docencoding>
        <docfilessubdirs>true</docfilessubdirs>
        <links>
            <link>http://java.sun.com/j2se/1.5.0/docs/api/</link>
        </links>
        <show>protected</show>
        <source>1.5</source>
        <sourcepath>${basedir}/src/main/java/com/acme/foo</sourcepath>
    </configuration>
    <reportSets>
        <reportSet>
            <reports>
                <report>javadoc</report>
            </reports>
        </reportSet>
    </reportSets>
</plugin>

В этом примере все классы в пакете com.acme.foo (включая подпакеты) будут генерировать javadoc.

Следует отметить, что этот плагин Maven является просто оболочка для утилиты Sun javadoc . Таким образом, большая часть документации и конфигурации для javadoc относится к этому плагину. См. Документацию Sun по параметру javadoc sourcepath .

В области, где maven-javadoc-plugin отличается по функциональности, Sun ' В документации по параметру sourcepath упоминается, что с помощью утилиты javadoc можно сгенерировать javadoc для определенных классов . Эта возможность недоступна в maven-javadoc-plugin. Пример этого показан в документации Sun:

  C:> cd C:\home\src\java\awt
  C:> javadoc -d C:\home\html Button.java Canvas.java Graphics*.java
14
ответ дан 21 October 2019 в 05:35
поделиться

Насколько мне известно, вы можете фильтровать только на уровне пакета. Однако Javadoc создается только для общедоступных и защищенных типов. Если типы имеют область действия по умолчанию или являются частными, для них не будет создан javadoc. Назначение их областью действия по умолчанию означает, что они по-прежнему видны другим типам в пакете. Если вам не нужен javadoc, вы, вероятно, не хотите, чтобы люди использовали эти типы, так что это, вероятно, в любом случае хорошая область действия.

Конфигурация excludePackageNames позволяет использовать подстановочные знаки. Итак, если у вас есть соглашение об именах пакетов, которое позволяет это, вы можете исключить большинство пакетов.

Допустим, у вас есть эти пакеты.

com.foo
com.foo.api
com.foo.internal   
com.foo.internal.core
com.foo.internal.util
com.foo.internal.ui
com.foo.ui

и вы хотите открыть только foo, foo.api и foo.ui, это шаблон будет работать:

<excludePackageNames>com.foo.internal.*:com.foo.bob</excludePackageNames>

В качестве альтернативы вы можете переместить типы, вызывающие нарушение, в отдельные пакеты,

1
ответ дан 21 October 2019 в 05:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: