Анализирует ли maven-bundle-plugin сгенерированные классы при создании заголовка import-package? - PullRequest
0 голосов
/ 29 января 2019

У меня есть проект Java OSGI, который генерирует некоторые классы с помощью jaxb2-maven-plugin из XSD.Я упаковываю это в связку с maven-bundle-plugin.

Я не понимаю, почему заголовок Import-Package в итоговом манифесте содержит ссылки на эти сгенерированные пакеты?Почему maven-bundle-plugin не считает эти классы локальными?

Вот фрагмент pom:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>jaxb2-maven-plugin</artifactId>
    <version>${jaxb2-maven-plugin.version}</version>
    <executions>
        <execution>
            <phase>generate-sources</phase>
            <goals>
                <goal>xjc</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <!-- The schema directory or xsd files. -->
        <sources>
            <source>${basedir}/target/generated-sources/resources/model</source>
        </sources>
        <xjbSources>
            <xjbSource>${basedir}/src/main/resources/jaxbBinding.xjb</xjbSource>
        </xjbSources>
        <xjcSourceExcludeFilters>
        <filter implementation="org.codehaus.mojo.jaxb2.shared.filters.pattern.PatternFileFilter">
        <patterns>
        <pattern>\GBOCommon/Common.xsd</pattern>
        </patterns>
        </filter>
        </xjcSourceExcludeFilters>
        <outputDirectory>${basedir}/target/generated-sources/jaxb</outputDirectory>
    </configuration>
</plugin>
<plugin>
    <groupId>org.apache.felix</groupId>
    <artifactId>maven-bundle-plugin</artifactId>
    <version>${maven-bundle-plugin.version}</version>
    <extensions>true</extensions>
    <executions>
        <execution>
            <id>bundle-manifest</id>
            <phase>process-classes</phase>
            <goals>
                <goal>manifest</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <instructions>
            <Bundle-SymbolicName>${project.groupId}.${project.artifactId}</Bundle-SymbolicName>
            <Export-Package>
                {local-packages}, <!-- Since 2.2.0 you can also use {local-packages} inside <Export-Package> and it will be expanded to the set of local packages. -->
                dozer <!-- To export Dozer mapping files -->
            </Export-Package>
        </instructions>
    </configuration>
</plugin>

А вот фрагмент манифеста:

Import-Пакет: сгенерировано; версия = "[6.0,7)" ...

Таким образом, "сгенерировано" - это имя пакета для классов, сгенерированных из XSD (без пространства имен).Эти классы зарождаются в каталоге "target / генерируется-источники / jaxb" на этапе создания источников (до этапа упаковки).Каким-то образом maven-bundle-plugin знает, что он должен включать все пакеты из этого каталога в окончательный комплект.Но если это правда, почему он упоминает их в Include-Package?

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

...