Как обеспечить подписание тестовых файлов в фазе пакета? - PullRequest
2 голосов
/ 15 ноября 2010

У меня есть многомодульный проект, в котором родительский POM определяет (в профиле) конфигурацию и использование maven-jarsigner-plugin для подписи jar-файлов, создаваемых проектом.

<profile>
    <id>sign</id>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jarsigner-plugin</artifactId>
                <version>1.2</version>
                <executions>
                  <execution>
                    <id>sign-jars</id>
                    <goals>
                      <goal>sign</goal>
                    </goals>
                  </execution>
                </executions>
                <configuration>
                    <keystore>/tmp/certificates.ks</keystore>
                    <alias>jarsign</alias>
                    <storepass>password</storepass>
                    <keypass>password</keypass>
                </configuration>
            </plugin>
        </plugins>
    </build>
</profile>

Некоторыеиз подмодулей в проекте дополнительно используйте maven-jar-plugin для создания тестового jar:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <executions>
        <execution>
            <id>test-jar</id>
            <phase>package</phase>
            <configuration>
            </configuration>
            <goals>
                <goal>test-jar</goal>
            </goals>
        </execution>
    </executions>
</plugin>

Я наблюдаю, что когда включен профиль подписи (например, mvn -Psign install) Mavenвыполняет цели в следующем порядке:

  • jar: jar
  • jarsigner: знак
  • jar: test-jar
  • установка: установка

Это приводит к неподписанному тестовому jar-файлу (как в target/, так и в локальном репозитории), который затем вызывает проблемы безопасности Java, когда последующий проект пытается использовать этот тест-jar.

Есть ли способ обеспечить выполнение jar: jar и jar: test-jar до знака jarsigner: sign?

1 Ответ

1 голос
/ 25 ноября 2010

Переместите ваше выполнение test-jar в фазу prepare-package, тогда оно будет там к тому времени, когда придет jarsigner.

В качестве альтернативы укажите профиль подписи в том же POM, что и test-jar.

У меня похожая ситуация с плагином сборки, когда сборка и jarsigner находятся в одном и том же POM, порядок в порядке, но если jarsigner находится в родительском POM, то порядок плохой (Maven 2.2.1).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...