1

我正在尝试通过在 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 文件。

这是我的构建错误

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

你能告诉我可能是什么问题吗?

4

2 回答 2

0

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

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

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

于 2013-09-20T15:10:29.787 回答
0

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

于 2017-08-10T19:16:54.260 回答