У меня есть многомодульный проект, в котором родительский 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?