Maven:修改依赖JAR的清单文件

Wim*_*pie 6 dependency-injection jar maven

任何帮助或指针真的非常感激.我需要在构建时将两个字段注入项目的所有依赖项JAR的Manifest文件中.

依赖jar已经构建并从repo中提取.我需要找到一种方法来获取JAR的Manifest文件,然后使用当前pom文件中的变量对其进行修改.有没有人知道如何做到这一点之前做过这个.提前感谢您的时间和回复

小智 0

这实际上并不是 Maven 允许您做的事情。从 Maven 的角度来看,每个具有特定名称的 JAR 都应该与其他具有相同名称的 JAR 完全相同。

例如,假设我的项目依赖于abc-1.0.jar. 我指定此依赖项是因为 ALphabet 团队abc为 1.0 版本发布了一个具有指定 API 的库。我应该能够从世界上的任何存储库获取这个 jar 文件,甚至当我的互联网中断时从我街上的邻居那里获取这个 jar 文件,并将其手动安装到我的本地存储库,并且它应该是完全相同的文件。如果它不是同一个文件,那么我将无法保证.classjar 内的文件将包含使我的构建成功而没有错误所需的库代码。

如果你真的有动力去完成这项工作,那么理论上这是可能的。您可以编写一个脚本来:

  1. 解析该properties部分的 POM XML,并从中解析出各个属性以及依赖项 jar 的名称
  2. 对于每个带有分类器“manifest_injected”的依赖 jar,尝试在本地存储库中找到它。如果不存在,则生成一个具有给定依赖项(不带manifest_injected分类器)的空 Maven 项目,mvn validate在其上运行以确保依赖项已下载并放置在本地存储库中(如果已找到)
  3. 克隆所有上述 JAR 文件,打开克隆,使用之前解析的属性执行所需的清单注入,并将注入的 jar 保存到 Maven 存储库中的正确位置
  4. 调用作为参数传递给脚本的 Maven 构建。

祝你好运!