Maven-bundle-plugin在制作import-package标头时是否分析生成的类?

时间:2019-01-29 08:23:41

标签: maven-bundle-plugin

我有一个Java OSGI项目,该项目使用XSD的jaxb2-maven-plugin生成了一些类。我用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>

这是清单片段:

  

导入包:已生成;版本=“ [6.0,7)” ...

因此,“ generated”是从XSD生成的类(没有名称空间)的程序包名称。这些类在generate-sources阶段(在打包阶段之前)存放在“ target / generated-sources / jaxb”目录中。 maven-bundle-plugin知道,它应该将该目录中的所有软件包都包含在最终的bundle中。但是,如果是真的,为什么在“包含包”中提到它们?

此外,我应该说没有其他依赖项使用这些程序包-因此,此处不能进行任何传递导入。

0 个答案:

没有答案