如何在使用maven apache felix插件构建捆绑jar时排除一些META-INF文件?
这是我的felix配置
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<version>2.4.0</version>
<extensions>true</extensions>
<configuration>
<instructions>
<!-- Embed all dependencies -->
<Embed-Transitive>true</Embed-Transitive>
<Embed-Dependency>*;scope=compile|runtime;inline=true</Embed-Dependency>
</instructions>
</configuration>
</plugin>
我引入所有传递依赖项并嵌入它们,因为我想创建一个可以添加到类路径中的jar。
当我尝试运行我的jar时虽然我得到了异常
Exception in thread "main" java.lang.SecurityException: Invalid signature file digest for Manifest main attributes
根据我在SO上发现的帖子,我手动删除了一些似乎来自弹性文件的META-INF /文件。然后,我重新创建了我的jar文件,它工作正常。有没有办法使用felix插件自动执行此操作?
由于
答案 0 :(得分:0)
看起来像阴影插件让这很容易。所以我改用了使用shade插件而不是使用felix插件。这是我的pom插件配置:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.3</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<filters>
<filter>
<artifact>*:*</artifact>
<!-- We need to exclude the signatures for any signed jars otherwise
we get an exception. -->
<excludes>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
</excludes>
</filter>
</filters>
</configuration>
</execution>
</executions>
</plugin>