2013-12-10 36 views
0

我正在使用以下ant命令對我的jar文件進行簽名。如何在發送後更改jar文件的名稱 - Apache ANT

<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> 

對於單文件時,它是好的,我可以改名字的罐子在簽約後的文件, 但是當我有多個罐子上面的線是沒有用的,我試圖做到的是,

例如

如果簽名的JAR文件的名稱是ab.jar after signing it I want to prepend Signed_ to it's name like Signed_ab.jar`等所有罐子我在我的文件集。

誰能告訴我該怎麼做?

回答

0

您可以在構建腳本使用ant jar命令/任務象下面這樣:

<jar basedir="bin" destfile="Signed_${jar-name}.jar"> 

順便說一句,你錯過了你的問題鍵入要使用命令。

+0

我已編輯我的帖子謝謝。 – Mihir

+0

但是在哪裏得到正在簽名的jar-name這是問題。 – Mihir

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> 
+0

嗨我試過你的解決方案BU它給了我一個以下錯誤BUILD FAILED F:\ workspace \ Pack200AntTask \ signbuild.xml:31:無法將源文件映射到任何合理的:F:\ workspace \ Pack200AntTask \ unsignedjars \ lwjgl_applet_util.jar 總時間:187毫秒 – Mihir

+0

@Mihir我認爲'handledirsep'應該處理正向和反向斜線之間的區別......我認爲一個更簡單的解決方案是保持文件名相同,但將簽名文件放入一個不同的目錄,即只設置'destdir =「signedjars」'並刪除'regexpmapper'。 –

+0

是的,我可以做到這一點,但螞蟻無法完成我的上述目標? – Mihir

0

可能是你可以寫幾個宏&通話「signJarsParallel」宏觀一次每個目錄爲此你想簽署罐子。

這不是測試代碼。你可以試試看。它利用正在運行的任務平行&從而提高了速度&跡象臨時前綴的名字,你想:只有跌破宏觀

<macrodef name="signMyJars"> 
<element name="myJar" implicit="true"/> 
<sequential> 
    <signjar alias="${alias}" keypass="${keypass}" 
      storepass="${storepass}" 
      keystore="${keystorefile}" 
      lazy="true"> 
     <myJar/> 
    </signjar> 
</sequential> 
</macrodef> 

打電話給你的Ant目標內。

<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="[email protected]{file}.jar"/> 
     </signMyJars> 
    </for> 

</sequential> 
</macrodef> 
相關問題