任何帮助或指针都会非常感谢。 我需要在构建时将两个字段注入到项目的所有依赖项JAR的清单文件中。Maven:修改依赖关系JAR的清单文件
依赖关系jar已经构建并从回购中被取消。 我需要找到一种方法来获取JAR的Manifest文件,然后使用当前的pom文件中的变量对其进行修改。 有没有人知道如何做到这一点。 在此先感谢您的时间和回复
任何帮助或指针都会非常感谢。 我需要在构建时将两个字段注入到项目的所有依赖项JAR的清单文件中。Maven:修改依赖关系JAR的清单文件
依赖关系jar已经构建并从回购中被取消。 我需要找到一种方法来获取JAR的Manifest文件,然后使用当前的pom文件中的变量对其进行修改。 有没有人知道如何做到这一点。 在此先感谢您的时间和回复
这实际上并不是Maven允许您执行的操作。从Maven的角度来看,每个具有特定名称的JAR应该与其他具有相同名称的JAR完全相同。
例如,假设我的项目取决于abc-1.0.jar
。我指定了这种依赖关系,因为ALphabet团队发布了一个abc
库,其中包含1.0版本的指定API。我应该可以从世界上任何一个仓库获取这个jar文件,甚至当我的互联网出去并将其手动安装到我的本地存储库时,从街上的邻居那里得到这个jar文件,它应该是完全相同的文件。如果它不是相同的文件,那么我就不能保证jar文件中的.class
文件将包含我需要的库代码,以使我的构建成功而没有错误。
如果你是真的有动机做这项工作,那么,这在理论上是可能的。您可以编写一个脚本,将:
properties
部分和解析从那里出来的各个属性,以及依赖罐子的名字manifest_injected
分类器),对其运行mvn validate
以确保依赖项已被下载并放置在本地存储库中(如果已发现)祝你好运!
您可以在二进制存储库中轻松完成。例如,Artifactory允许您编写a user plugin that will be triggered on any download。在这个监听器中,您可以编写自己的代码 - 打开jar文件,更改清单文件并提供更改后的jar而不是原始文件(并在下次缓存它)。
为什么你想这样做,导致这些工件已经建成,换句话说就是不可变的。您可以通过maven-dependency-plugin和maven-assembly-plugin的组合来更改这些工件,但它会产生一个非常大的pom文件。另一方面,你正在改变已经构建的工件,这将违背Maven的想法。 – khmarbaise
@Wimpie你找到解决方案吗? –
'maven-assembly-plugin'允许你指定清单配置,但是目前有一个[bug](http://jira.codehaus.org/browse/MASSEMBLY-450),它阻止合并现有清单附加清单条目。我发现这是因为我试图做同样的事情并失败。 – user944849