maven-bundle-plugin自定义包含到bundle中的资源

本文详细介绍了如何使用maven-bundle-plugin的Include-Resource指令将特定资源文件添加到生成的bundle JAR中。包括不同指令格式的具体用法、路径配置规则及示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    在利用maven-bundle-plugin生成bundle时,有时需要往生成的bundle JAR中添加一些文件,这时候就可以通过添加<Include-Resource>指令来复制任意的资源到bundle JAR文件中。


<Include-Resource>指令有如下三种格式:

clause ::= assignment | inline | simple
assignment ::= PATH '=' PATH
simple ::= PATH
inline ::= '@' PATH


    首先需要说明的是,<Include-Resource>指令中,实际文件的路径是相对于pom.xml的,而复制的目的路径是相对于最终的bundle JAR文件根目录的。


    对于assignmentsimple格式,PATH参数可以指向一个文件或文件夹。


     simple形式的指令,如果只包含文件名,则会把资源直接复制到bundle JAR的根目录下,而不会自动创建路径目录。例如,src/main/resources/a/b.c会将b.c复制到bundle JAR的根目录下。如果PATH指向的是一个文件夹,则该文件夹下所有的文件,包括文件夹层次都会被复制到bundle JAR的根目录下,例如原来有个文件夹目录为a/b/c/d/e/f.g,在<Include-Resource>添加a/b/c,则d整个文件夹会被复制到bundle JAR根目录下。


    如果指定的资源需要被放在bundle jar子文件夹下,则需要使用assignment形式。该形式下第一个PATH是目的路径(如果资源是个文件包括文件名),第二个PATH是需要拷贝的资源源路径。


    inline形式的PATH需要是ZIP或JAR文件,该文件会被解压到bundle JAR的根目录下。

   

    如果资源被包含在“{ ... }”括号中,该资源名称则认为是变量并在执行时被替换。


    bundle plugin默认的会自动添加一个<Include-Resource>指令并包含项目下的resource文件夹,如果定义了自己的<Include-Resource>指令,就会覆盖自动生成的<Include-Resource>。如果要添加resource文件夹到自己定义的<Include-Resource>指令中,只需要添加{maven-resources}到列表中即可,插件会自动展开该变量。


示例1:

<Include-Resource>
  {maven-resources}, {maven-dependencies},
  org/foo/Example.class=target/classes/org/foo/Example.class
</Include-Resource>

示例2:

<plugin>
  <groupId>org.apache.felix</groupId>
  <artifactId>maven-bundle-plugin</artifactId>
  <extensions>true</extensions>
  <configuration>
    <instructions>
      <Import-Package>*</Import-Package>
      <Export-Package></Export-Package>
      <Include-Resource>
        readme.txt, @src/test/ziptest.zip, copyresource/test=src/main, src/main/java/cn/com
      </Include-Resource>
    </instructions>
    <manifestLocation>${project.basedir}/META-INF</manifestLocation>
  </configuration>
</plugin>








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值