8

任何帮助或指示将不胜感激。我需要在构建时将两个字段注入到我的项目的所有依赖项 JAR 的清单文件中。

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

4

2 回答 2

0

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

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

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

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

祝你好运!

于 2014-01-03T07:56:10.097 回答
0

您可以在二进制存储库中轻松完成。例如,Artifactory 允许您编写将在任何下载时触发​​的用户插件。在此侦听器中,您可以编写自己的代码 - 打开 jar,更改清单并提供更改后的 jar 而不是原始 jar(并将其缓存以备下次使用)。

于 2014-01-03T08:01:59.070 回答