9

私はなんとかメインjarを作成し、依存関係を単一のディレクトリにコピーしました。残っている唯一のステップは、すべてのjarに署名することです。

jar:signの一部として自分で作成したjarに署名できますが、依存関係に署名するにはどうすればよいですか?

ありがとう

4

4 に答える 4

7

ここにいくつかのオプションがあります:

  1. Maven antタスクを使用して、すべての依存関係に対してJDKからjarsignerを実行します。
  2. アプリをJNLP化する目的で使用していない場合でも、すべてのJARに署名できるwebstartプラグインを使用してください。私は実際に1つのアプリをJNLP化するためにそれを使用しています。
  3. すべての依存関係を反復処理するためにwebstartプラグインソースが何を行っているかを確認し、それらに署名して、同じことを行う新しいMavenプラグイン/Mojoを起動します。JNLPはありません。
  4. アプリとその依存関係をOnejarし、それに署名するだけです。
于 2009-05-22T06:48:21.537 に答える
1

プラグイン構成に追加<archiveDirectory>target</archiveDirectory>

于 2009-12-06T18:39:40.183 に答える
0

を使用している場合は、「jarPath」設定を使用して署名する単一のmaven-jar-pluginjarを指定できます。次の構成により、依存関係のないjarファイルではなく、依存関係のあるjarファイルが署名されます。

<plugin>
    <artifactId>maven-jar-plugin</artifactId>
    <executions>
      <execution>
        <goals>
          <goal>sign</goal>
        </goals>
      </execution>
      <execution>
        <id>make-assembly</id>
        <phase>package</phase>
        <goals>
          <goal>sign</goal>
        </goals>
      </execution>
    </executions>
    <configuration>
      <!-- NOTE: The secret key is in shared version control.  The
           password is in shared version control.  This IS NOT
           SECURE.  It's intended to help avoid accidentally
           loading the wrong class, nothing more. -->
      <jarPath>${project.build.directory}/${project.build.FinalName}-${project.packaging}-with-dependencies.${project.packaging}</jarPath>
      <keystore>${basedir}/keystore</keystore>
      <alias>SharedSecret</alias>
      <storepass>FOO</storepass>
    </configuration>
  </plugin>

両方に署名したい場合は、でそれを行う方法がわからないmaven-jar-pluginので、上記の他のオプションを調べる必要があるかもしれません。

于 2010-11-29T18:48:21.353 に答える
0

maven-assembly-pluginを使用して単一のJARを作成することもできます。

(別のJARに署名するという)Eric Andersonによる他の提案とともに、(元のJARの代わりに)このアセンブルされたJARに署名することができます。ここでは、プラグイン定義の順序が重要であることに注意してください。

sign.keystore.fileなどが他の場所(プロファイルなど)に設定されていることを前提としています。

<build>
    <plugins>
        <!-- It seems that maven-assembly-plugin must be declared before the maven-jar-plugin,
             so that it is executed first in the package phase,
             and then the signing of the packaged jar can succeed. -->
        <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>2.4</version>
            <configuration>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
                <archive>
                    <manifestEntries>
                        <!-- ... -->
                    </manifestEntries>
                </archive>
            </configuration>
            <executions>
                <execution>
                    <id>make-assembly</id>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>2.4</version>
            <executions>
                <execution>
                    <goals>
                        <goal>jar</goal>
                    </goals>
                </execution>
                <execution>
                    <id>make-assembly</id>
                    <phase>package</phase>
                    <goals>
                        <goal>sign</goal>
                    </goals>
                    <configuration>
                        <jarPath>${project.build.directory}/${project.build.FinalName}-${project.packaging}-with-dependencies.${project.packaging}</jarPath>
                        <keystore>${sign.keystore.file}</keystore>
                        <type>${sign.keystore.type}</type>
                        <storepass>${sign.keystore.storepass}</storepass>
                        <alias>${sign.keystore.alias}</alias>
                        <verify>true</verify>
                        <verbose>false</verbose>
                        <removeExistingSignatures>true</removeExistingSignatures>
                    </configuration>
                </execution>
            </executions>
            <configuration>
                <archive>
                    <manifest>
                        <!-- <addClasspath>true</addClasspath> -->
                    </manifest>
                    <manifestEntries>
                        <!-- ... -->
                    </manifestEntries>
                </archive>
            </configuration>
        </plugin>
    </plugins>
</build>
于 2013-04-24T20:58:07.870 に答える