如何在清单文件中包含 Maven 依赖项
Posted
技术标签:
【中文标题】如何在清单文件中包含 Maven 依赖项【英文标题】:How to include Maven dependencies in Manifest file 【发布时间】:2016-12-02 19:03:17 【问题描述】:我正在为 OSGI 应用程序开发一个插件,使用 maven 进行编译。为了安装插件,OSGI 应用程序应该读取有关插件依赖项的信息。此信息应在 MANIFEST.MF 文件中提供。我想知道的是如何使用 Virgo Tooling 生成正确的 MANIFEST.MF 文件。
这些是我想包含在 MANIFEST.MF
中的依赖项
更新根据答案我使用了 Apache Felix
在我添加的 pom.xml 中
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifestFile>$project.build.outputDirectory/META-INF/MANIFEST.MF</manifestFile>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<executions>
<execution>
<id>bundle-manifest</id>
<phase>process-classes</phase>
<goals>
<goal>manifest</goal>
</goals>
</execution>
</executions>
</plugin>
下载 maven-bundle.jar 并执行命令mvn org.apache.felix:maven-bundle-plugin:manifest
生成带有清单的 .jar 文件,但清单仅包含以下信息
Manifest-Version: 1.0
Implementation-Vendor: The Apache Software Foundation
Implementation-Title: Maven Bundle Plugin
Implementation-Version: 3.2.0
Implementation-Vendor-Id: org.apache.felix
Built-By: cziegeler
Build-Jdk: 1.7.0_80
Specification-Vendor: The Apache Software Foundation
Specification-Title: Maven Bundle Plugin
Created-By: Apache Maven 3.3.9
Specification-Version: 3.2.0
Archiver-Version: Plexus Archiver
任何想法我做错了什么?
【问题讨论】:
【参考方案1】:就个人而言,我会使用Apache Felix Maven Bundle Plugin 生成 MANIFEST.MF 文件
尝试在项目的 pom.xml 文件中为插件添加一些配置。
这是一个开始,但您应该阅读文档并找到适合您确切需求的正确说明。如果您能提供一个 MANIFEST.MF 文件的示例,将会很有帮助。
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<version>3.2.0</version>
<extensions>true</extensions>
<configuration>
<instructions>
<Embed-Dependency>*;scope=compile|runtime;inline=false</Embed-Dependency>
</instructions>
</configuration>
<executions>
<execution>
<id>generate-manifest</id>
<goals>
<goal>manifest</goal>
</goals>
<phase>generate-resources</phase>
</execution>
</executions>
</plugin>
使用这种配置,MANIFEST.MF 将在“生成资源”阶段生成。
【讨论】:
能否请您添加有关您提供的解决方案的更多详细信息? 在这里查看“清单”目标:felix.apache.org/documentation/subprojects/…以上是关于如何在清单文件中包含 Maven 依赖项的主要内容,如果未能解决你的问题,请参考以下文章
是否可以创建一个包含项目类和项目依赖项的“uber”jar 作为带有自定义清单文件的 jar?
Flutter:我们检测到您的应用在您的 1 个或多个 app bundle 或 APK 的清单文件中包含 requestLegacyExternalStorage 标志