使用 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 文件。

这是我的构建错误

[错误] 捆绑包 com.mine-bundle:捆绑包:1.0-快照 : 输入文件执行 不存在:target/classes/META-INF/myTags.tld

你能说出可能是什么问题吗?

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

默认情况下,捆绑插件会转换项目的 Maven 资源 目录到单个指令中。如果你 指定您自己的指令,这将替换 生成一个。

因此,如果您将 TLD 文件放置在 src/main/resources/META-INF 中,则应包含它而不附带其他选项。

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

最新更新