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确实无法将哈希作为属性发出。

我目前可以想到的解决方案是:

  1. 将jar中该哈希列表文件的相对路径添加到清单中。 我认为将哈希从清单中分离出来并不是那么糟糕,特别是如果哈希列表很大的话。
  2. 添加另一个插件执行来读取使用cheksum插件生成的文件; 请参阅: https : //stackoverflow.com/a/9339405/1175253 。 但仅此一点可能是不够的,因为如果没有进一步的工作,就不能迭代地添加哈希值。 最终可能会将散列文件内容转储到清单条目或编写自定义插件。 如果我要开发这样的插件,我将从mojo-executor-maven-plugin开始 ,它允许集成现有的插件。