使用OSGI包创建自定义标记库的问题

时间:2013-09-20 13:25:29

标签: tags maven-3 cq5 osgi-bundle

我正在尝试使用cq中的OSGI包创建自定义标记库。实际上我创建了所有必要的文件,但我无法在构建时将mytags.tld文件放在META-INF文件夹下。为此,我使用了maven-bundle-plugin插件。这是我的代码,将资源包含在META-INF文件夹

<plugin>
    <groupId>org.apache.felix</groupId>
    <artifactId>maven-bundle-plugin</artifactId>
    <extensions>true</extensions>
    <configuration>
        <instructions>
            <Include-Resource>META-INF/myTags.tld=target/classes/META-INF/myTags.tld</Include-Resource>
        </instructions>
        <Export-Package>com.mine.*</Export-Package>
        <Import-Package>*;resolution:=optional</Import-Package> 
        <Embed-Dependency>*;scope=compile|runtime</Embed-Dependency>                   
    </configuration>
</plugin>

注意:我已将我的标记文件放在“src \ main \ resources \ META-INF \ myTags”下

我使用<Include-Resource>来包含我的tld文件。但是我可以在创建jar文件后在META-INF文件夹下看到我的tld文件。

这是我的构建错误

  

[ERROR] Bundle com.mine-bundle:bundle:1.0-SNAPSHOT:输入文件   不存在:target / classes / META-INF / myTags.tld

你们有没有人能说出这可能是什么问题?

2 个答案:

答案 0 :(得分:0)

我认为<Include-Resource>参数是多余的。如果您不指定它,maven-bundle-plugin将包含从src/main/resources到输出JAR的所有资源,如official doc所示:

  

默认情况下,bundle插件会转换项目的Maven资源   将目录转换为单个指令。如果你   指定你自己的指令,这将取代   生成一个。

因此,如果您在src/main/resources/META-INF中放置了TLD文件,则应该包含该文件,而无需其他选项。

答案 1 :(得分:0)

如果没有src/main/resources文件夹,我在IntelliJ中遇到了这个问题。将虚拟属性文件添加到该位置会修复它。