Maven 2 如何确保在包阶段签署测试JAR?
我有一个多模块项目,其中父POM指定(在概要文件中)maven jarsigner插件的配置和使用,以对项目生成的JAR进行签名Maven 2 如何确保在包阶段签署测试JAR?,maven-2,Maven 2,我有一个多模块项目,其中父POM指定(在概要文件中)maven jarsigner插件的配置和使用,以对项目生成的JAR进行签名 <profile> <id>sign</id> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId>
<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>
签名
org.apache.maven.plugins
maven jarsigner插件
1.2
标志罐
签名
/tmp/certificates.ks
震击
密码
密码
项目中的一些子模块还使用maven jar插件来生成测试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>
org.apache.maven.plugins
maven jar插件
试验罐
包裹
试验罐
我注意到,当启用签名配置文件时(例如,mvn-Psign install
),Maven会按照以下顺序执行目标:
- 罐子:罐子
- 签名者:签名
- jar:测试jar
- 安装:安装
target/
和本地存储库中),当后续项目尝试使用该测试jar时,它会导致java安全问题
有没有办法确保jar:jar和jar:test-jar在jarsigner:sign之前执行?将您的
test-jar
执行移动到prepare-package
阶段,那么当jarsigner开始执行时它就会在那里
或者,在与测试jar相同的POM中指定签名配置文件
我对assembly插件也有类似的情况,如果assembly和jarsigner在同一POM中,顺序就可以了,但是如果jarsigner在父POM中,那么顺序就不好了(Maven 2.2.1)。现在,我将签名绑定到安装阶段。听上去,这种问题在Maven中很常见,现在还不清楚Maven开发者社区是否真的认为这是一个bug。。。请参阅示例和许多相关的相关问题。当然,似乎没有系统地解决这一问题:-/