Maven – 在Java中添加可访问的校验和
上次我在maven中成功添加了一个很好的checksum-maven-plugin
。 我为我的一个文件生成校验和。 我正在使用这个特殊的配置:
package files ... ${basedir}/myfiles file-name
它工作正常,并生成一个file-name.md5
文件,其中包含校验和/target
。
我用maven-assembly-plugin
用这个执行来构建我的JAR。
package single
在Java内部我已经访问了我的src/main/resources/my.properties
属性文件:
InputStream inputStream = RunJetty.class.getClassLoader() .getResourceAsStream("my.properties");
(这很好用)。
我需要将checksum checksum-maven-plugin
生成的checksum-maven-plugin
传递给Java代码。 怎么做?
经过一些评论后,我看到两个选择:
- 一种是将校验和文件添加到JAR。
- 2’是将校验和值添加到
my.properties
文件(或创建单独的属性文件)。
也许,JAR清单是存储哈希的合适位置,当然,只要你不想存储jar本身的哈希值。 如果哈希用于一致性检查(例如许可),则可以使用盐和加密来提高安全性。
- maven-jar-plugin能够
- 签下jar子
- 自定义清单
- 包自定义文件
我认为,这是要走的路,因为maven文物应该保持这种方式一致,而后来改变jar子会让你陷入困境。 在这里查看如何添加自定义文件,例如您的属性文件。 但是,请注意在此
checksum-maven-plugin
之前配置checksum-maven-plugin
,或者,您也可以通过将其映射到prepare-package
阶段来提前执行。
-
关于如何阅读清单,请看这里: 阅读我自己的Jar的清单
-
为了保持Java类之间的一致性,还可以“密封”jar。
oracle清单教程: http : //docs.oracle.com/javase/tutorial/deployment/jar/manifestindex.html
checksum-maven-plugin
确实无法将哈希作为属性发出。
我目前可以想到的解决方案是:
- 将jar中该哈希列表文件的相对路径添加到清单中。 我认为将哈希从清单中分离出来并不是那么糟糕,特别是如果哈希列表很大的话。
- 添加另一个插件执行来读取使用cheksum插件生成的文件; 请参阅: https : //stackoverflow.com/a/9339405/1175253 。 但仅此一点可能是不够的,因为如果没有进一步的工作,就不能迭代地添加哈希值。 最终可能会将散列文件内容转储到清单条目或编写自定义插件。 如果我要开发这样的插件,我将从mojo-executor-maven-plugin开始 ,它允许集成现有的插件。