Maven可以重新签署依赖关系吗?
我正在使用maven-jarsigner-plugin
来签署我的阴影超级jar。 我确实需要在自己的jar中分发一些依赖项,并希望从Maven仓库获取这些jar,清除它们的任何现有签名,并使用我自己的证书签名。
有没有Maven插件可以做到这一点,或者我会涉及一些Ant插件hackery?
结果maven-jarsigner-plugin
可以使用它的removeExistingSignatures
配置元素重新设置现有的jar。 很简单!
我使用maven-dependency-plugin
将工件复制到generate-resources
阶段的.war项目中,然后在process-resources
阶段签名。
org.apache.maven.plugins maven-dependency-plugin 2.8 copy generate-resources copy org.lwjgl.lwjgl lwjgl-platform 2.9.0 natives-osx jar true src/main/webapp/ lwjgl-platform-natives-osx.jar src/main/webapp true true org.apache.maven.plugins maven-jarsigner-plugin 1.2 sign process-resources sign ${basedir}/path/to/my.keystore alias password password true src/main/webapp/ false true
我知道这不是一个非常好的答案,但我会在这些步骤中尝试解决方案:
- 通过
maven-dependency-plugin
复制maven-dependency-plugin
-
antrun
:
它们,再次从/ META-INF目录中删除除MANIFEST.MF,
之外的所有内容,并使用
ant任务再次签名。
自从我使用maven(最近我承认)以来我发现的主要问题是它会让你通过它预定义的管道,而这种事情(比看起来更常见)会让你需要一些anthackery作为你叫它;)
从未使用它,但似乎webstart-maven-plugin可以取消签名和签名。
http://mojo.codehaus.org/webstart/webstart-maven-plugin/unsign-mojo.html
希望这有帮助。
使用maven:
为每个要重新签名的jar创建一个空的maven jar模块,执行maven 依赖:解压其中一个jar,过滤签名文件并将文件复制到src / main / java。
然后使用maven-jarsigned-plugin
对jar进行签名,结果将是一个包含相同类的jar。
另一种非maven为基础:
上面的方法不能很好地扩展,创建遵循这些步骤的脚本可能会更简单。
最简单的方法是:
考虑在您的maven存储库中注册签名者的公钥,而不是重新签名,这意味着您信任创建这些jar的人并接受来自他们的任何jar。
事实上,您已经信任他们,因为您正在使用他们的代码并将其重新签名,因此将存储库配置为接受其签名会更简单,就像某人已经配置存储库以接受您的签名一样 。
存储库链接到包含接受的jar签名者的公钥的密钥存储区,这将是要求处理存储库的团队向其可信签名者列表添加一个密钥,他们会知道如何执行该操作当然。