可能是一个不寻常的问题。
我正在从源代码构建 apache-log4j-1.2.17,一切正常,但我想稍微修改一下过程,不知道如何。
即,我想从清单文件中删除Bnd-LastModified属性,并从pom.properties文件中删除时间戳注释。有什么我想念的配置吗?我可以“手动”删除它们(shell 脚本),但这似乎是错误的。
可能是一个不寻常的问题。
我正在从源代码构建 apache-log4j-1.2.17,一切正常,但我想稍微修改一下过程,不知道如何。
即,我想从清单文件中删除Bnd-LastModified属性,并从pom.properties文件中删除时间戳注释。有什么我想念的配置吗?我可以“手动”删除它们(shell 脚本),但这似乎是错误的。
我有同样的问题,我刚刚在谷歌上找到了标题问题的答案。我意识到这对你来说已经晚了一年左右。
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<configuration>
<archive>
<addMavenDescriptor>false</addMavenDescriptor>
</archive>
<instructions>
<_removeheaders>Bnd-LastModified</_removeheaders>
我计划比较 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,因此md5
与md5sum
. awk
废话是从unzip -l
输出中删除时间戳。代码完成后,如果different
是t
,则文件不同;否则,文件是相同的。