1

可能是一个不寻常的问题。

我正在从源代码构建 apache-log4j-1.2.17,一切正常,但我想稍微修改一下过程,不知道如何。

即,我想从清单文件中删除Bnd-LastModified属性,并从pom.properties文件中删除时间戳注释。有什么我想念的配置吗?我可以“手动”删除它们(shell 脚本),但这似乎是错误的。

4

2 回答 2

1

我有同样的问题,我刚刚在谷歌上找到了标题问题的答案。我意识到这对你来说已经晚了一年左右。

<plugin>
  <groupId>org.apache.felix</groupId>
  <artifactId>maven-bundle-plugin</artifactId>
  <configuration>
    <archive>
    <addMavenDescriptor>false</addMavenDescriptor>
    </archive> 
    <instructions>   
      <_removeheaders>Bnd-LastModified</_removeheaders>
于 2015-04-24T16:50:35.750 回答
1

我计划比较 ZIP 文件的 MD5,以确定在部署期间是否需要上传 OSGi 捆绑包 JAR。我假设如果包 JAR 中的文件相同,那么包 JAR 本身也是相同的。在构建之间,我发现您描述的时间戳是构建之间唯一的文件内差异。在使用 shell 脚本提取这些时间戳之后——这使得所有文件都相同——我发现由于文件时间戳的原因,捆绑 JAR 仍然不同。

我最终比较unzip -lv了两个捆绑 JAR 的输出以确定相等性:

lhash=$(unzip -lv $HOME/staging/$bundle | sed -ne '/---/,/---/p' | sed -e '1d;$d;' | awk '{L="";for(i=1;i<NF;i++){if(i<5 || i>6){L = L " " $bundle}}print L}' | md5)
rhash=$(ssh -i $HOME/.ssh/keys/keyfile.pem user@$host "unzip -lv ~ubuntu/bundles/$bundle | sed -ne '/---/,/---/p' | sed -e '1d;\$d;' | awk '{L=\"\";for(i=1;i<NF;i++){if(i<5 || i>6){L = L \" \" \$bundle}}print L}' | md5sum | awk '{print \$1}'")
if [ "$lhash" = "$rhash" ]
then
    different=f
else
    different=t
fi

我的本地机器是 Mac,而远程机器正在运行 ubuntu,因此md5md5sum. awk废话是从unzip -l输出中删除时间戳。代码完成后,如果differentt,则文件不同;否则,文件是相同的。

于 2014-07-06T15:52:55.690 回答