Может ли maven подписывать не только произведенную банку, но и зависимости - PullRequest
9 голосов
/ 19 мая 2009

Мне удалось создать основной jar, скопировать зависимости в один каталог, остался только один шаг - подписать все jar.

Я могу подписать свой изготовленный jar как часть jar: sign, но как мне подписать зависимости?

Спасибо

Ответы [ 4 ]

7 голосов
/ 22 мая 2009

Вот несколько вариантов:

  1. Используйте задачу Ant Maven для запуска jarsigner из JDK для всех зависимостей.
  2. Используйте плагин webstart , который может подписывать все ваши JAR-файлы, даже если вы не используете его для целей JNLP-izing вашего приложения. Я использую его для JNLPize одного приложения.
  3. Посмотрите, что делает источник плагинов webstart для перебора всех зависимостей, подпишите их и запустите новый плагин Maven / Mojo, который делает то же самое, без JNLP.
  4. Onejar ваше приложение и его зависимости и просто подпишите это.
1 голос
/ 06 декабря 2009

добавить в конфигурацию плагина <archiveDirectory>target</archiveDirectory>

0 голосов
/ 25 апреля 2013

Можно также создать один JAR-файл с помощью подключаемого модуля maven-assembly.

Вместе с другим предложением Эрика Андерсона (о подписании другого JAR) можно подписать этот собранный 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>
0 голосов
/ 29 ноября 2010

Если вы используете maven-jar-plugin, вы можете указать, какую одну банку подписать, используя параметр "jarPath". Следующая конфигурация приводит к тому, что файл jar-with-dependencies будет подписан вместо файла 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, поэтому вам, возможно, придется поискать другие варианты, упомянутые выше.

...