3

ビルドで多くの jar ファイルに署名しています。現時点では、合計ビルド時間の 60 ~ 80% を占めており、15 分から 45 分以上に変更されています。したがって、署名プロセスを並列化して高速化することに非常に関心があります。

すべての jar は 1 つのフォルダーにあり、現在、スクリプトは次のようになっています。

<property name="jars.dir" location="......" />
<signJar ...paswords etc... />
  <fileset dir="${jars.dir}" includes="**/*.jar" />
</signJar>

parallelすべての jar が 1 つのフォルダーにあるため、タグを単純に使用することはできません。そのため、並列化するには別の方法が必要です。ビルドはさまざまなコンピューターやサーバーで実行されるため、さまざまな数のコアを処理できるほどソリューションが柔軟であることが重要です。

あなたの何人かが助けてくれることを願っています。ありがとう :)

4

2 に答える 2

1

FWIW、これは私がWebstart用のJARに署名してパックするために使用するマクロです。これにより、必要なマニフェスト属性が追加され、JAR を再パックして署名用に正規化されます。

このマクロは、並列<for>ループ内から呼び出された場合に問題なく機能します。

<signjar>キー情報を使用してタスクを微調整する必要があります。

<!-- Macro for JAR signing and pack200 -->
<macrodef name="sign-and-pack">
    <attribute name="jar"/>
    <sequential>
        <echo message="Signing and packing @{jar}..."/>

        <!-- Kill any existing signatures and delete existing manifest -->
        <exec executable="zip" logError="true" failonerror="false">
            <arg value="-d"/>
            <arg value="--quiet"/>
            <arg value="@{jar}"/>
            <arg value="META-INF/MANIFEST.MF"/>
            <arg value="META-INF/*.SF"/>
            <arg value="META-INF/*.DSA"/>
            <arg value="META-INF/*.RSA"/>
        </exec>

        <!-- Rebuild manifest with the required attributes -->
        <jar update="true" file="@{jar}">
            <manifest>
                <attribute name="Application-Name" value="${webstart.app.name}"/>
                <attribute name="Permissions" value="all-permissions"/>
                <attribute name="Codebase" value="*"/>
                <attribute name="Trusted-Only" value="true"/>
            </manifest>
        </jar>

        <!-- Pack and unpack JAR to normalize it -->
        <exec executable="pack200" logError="true" failonerror="true">
            <arg value="--quiet"/>
            <arg value="--repack"/>
            <arg value="@{jar}"/>
        </exec>

        <!-- Sign JAR -->
        <signjar keystore="mykeystore.p12" storetype="pkcs12" storepass="secret123" jar="@{jar}"
          alias="my key alias"/>

        <!-- Compress JAR -->
        <exec executable="pack200" logError="true" failonerror="true">
            <arg value="--quiet"/>
            <arg value="--modification-time=latest"/>
            <arg value="@{jar}.pack.gz"/>
            <arg value="@{jar}"/>
        </exec>
    </sequential>
</macrodef>
于 2015-11-30T18:09:34.417 に答える