3

私はmaven-jarsigner-plugin、影付きの uber-jar に署名するために使用しています。ただし、いくつかの依存関係を独自の jar で配布する必要があり、これらの jar を Maven リポジトリから取得し、既存の署名をすべてクリアして、独自の証明書で署名したいと考えています。

これを行う Maven プラグインはありますか、それとも Ant プラグインのハッカーを使用しますか?

4

4 に答える 4

5

config 要素を使用して、既存の jar にmaven-jarsigner-plugin​​署名できることが判明しました。とても簡単!removeExistingSignatures

maven-dependency-pluginフェーズでアーティファクトを .war プロジェクトにコピーしてから、フェーズgenerate-resourcesで署名しますprocess-resources

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <version>2.8</version>
    <executions>
        <execution>
            <id>copy</id>
            <phase>generate-resources</phase>
            <goals>
                <goal>copy</goal>
            </goals>
            <configuration>
                <artifactItems>
                    <artifactItem>
                        <groupId>org.lwjgl.lwjgl</groupId>
                        <artifactId>lwjgl-platform</artifactId>
                        <version>2.9.0</version>
                        <classifier>natives-osx</classifier>
                        <type>jar</type>
                        <overWrite>true</overWrite>
                        <outputDirectory>src/main/webapp/</outputDirectory>
                        <destFileName>lwjgl-platform-natives-osx.jar</destFileName>
                    </artifactItem>   
                </artifactItems>        
                <outputDirectory>src/main/webapp</outputDirectory>
                <overWriteReleases>true</overWriteReleases>
                <overWriteSnapshots>true</overWriteSnapshots>
            </configuration>
        </execution>
    </executions>
</plugin>

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jarsigner-plugin</artifactId>
    <version>1.2</version>
    <executions>
        <execution>
            <id>sign</id>
            <phase>process-resources</phase>
        <goals>
            <goal>sign</goal>
            </goals>
    </execution>
    </executions>
    <configuration>
        <keystore>${basedir}/path/to/my.keystore</keystore>
        <alias>alias</alias>
        <storepass>password</storepass>
        <keypass>password</keypass>
        <verbose>true</verbose>
        <archiveDirectory>src/main/webapp/</archiveDirectory>
        <processMainArtifact>false</processMainArtifact>
        <removeExistingSignatures>true</removeExistingSignatures>
    </configuration>
</plugin>
于 2014-01-21T09:12:52.067 に答える
3

本当に良い答えではないことはわかっていますが、次の手順で解決策を試してみます。

  • 依存関係をコピーするmaven-dependency-plugin
  • antrun: <unzip>MANIFEST.MF を除く /META-INF ディレクトリからすべてを削除し、ant タスク<jar>を使用して再度署名します。<jarsign>

私が maven を使用して以来、私が見つけた主な問題は (ごく最近私は認めます)、事前定義されたパイプラインを通過することです。あなたはそれを呼び出します;)

于 2014-01-09T19:36:04.823 に答える
2

使用したことはありませんが、webstart-maven-plugin は jar の署名と署名を解除できるようです。

http://mojo.codehaus.org/webstart/webstart-maven-plugin/unsign-mojo.html

この助けを願っています。

于 2014-01-14T10:43:32.583 に答える