我使用以下蚂蚁命令签署我的罐子。
<signjar alias="${alias}" keypass="${keypass}"
storepass="${storepass}"
keystore="${keystorefile}"
signedjar="${dist.dir}/${jar.signed.fileName}"
lazy="true">
<fileset dir="${dist.dir}">
<include name="*.jar" />
<include name="lib/*.jar" />
</fileset>
</signjar>
对于单个文件,我可以在签名后更改jars文件的名称, 但是当我有多个罐子时,上面的线条没用,我想要完成的是,
例如
如果未签名的jar文件名为ab.jar after signing it I want to prepend
签名_ to it's name like
Signed_ab.jar`,依此类推我在文件集中的所有jar文件。
谁能告诉我怎么做?
答案 0 :(得分:0)
您可以在构建脚本中使用如下所示的ant jar命令/任务:
<jar basedir="bin" destfile="Signed_${jar-name}.jar">
不过,你错过了在你的问题中输入你正在使用的命令。
答案 1 :(得分:0)
signjar任务可以使用mapper
定义如何将输入文件名转换为输出文件名:
<signjar alias="${alias}" keypass="${keypass}"
storepass="${storepass}"
keystore="${keystorefile}"
destdir="${dist.dir}"
lazy="true">
<fileset dir="${dist.dir}">
<include name="*.jar" />
<include name="lib/*.jar" />
<!-- since we're dumping signed JARs in the same dir as the source
ones, we need to prevent already-signed JARs from being signed
again. A better approach might be to put the Signed_* JARs in
a different directory -->
<exclude name="**/Signed_*" />
</fileset>
<regexpmapper handledirsep="yes"
from="^(.*?)/([^/]*)$$" to="\1/Signed_\2" />
</signjar>
答案 2 :(得分:0)
可能你可以写几个宏&amp;为要为其签名的每个目录调用'signJarsParallel'宏一次。
这不是经过测试的代码。你可以尝试一下。它平行地使用运行任务。因此提高速度&amp;标记为您想要的临时前缀名称:
<macrodef name="signMyJars">
<element name="myJar" implicit="true"/>
<sequential>
<signjar alias="${alias}" keypass="${keypass}"
storepass="${storepass}"
keystore="${keystorefile}"
lazy="true">
<myJar/>
</signjar>
</sequential>
</macrodef>
仅在蚂蚁目标内的宏下方调用。
<macrodef name="signJarsParallel">
<attribute name="dirName"/>
<sequential>
<for param="file" parallel="true" threadCount="5">
<path>
<fileset dir="@{dirName}">
<include name="*.jar"/>
<include name="lib/*.jar"/>
</fileset>
</path>
<signMyJars>
<fileset file="Signed_@{file}.jar"/>
</signMyJars>
</for>
</sequential>
</macrodef>