我正在尝试使用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
你们有没有人能说出这可能是什么问题?
答案 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中遇到了这个问题。将虚拟属性文件添加到该位置会修复它。