我正在尝试通过在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 中遇到了这个问题。将虚拟属性文件添加到该位置可以修复它。