Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Maven 2 如何确保在包阶段签署测试JAR?_Maven 2 - Fatal编程技术网

Maven 2 如何确保在包阶段签署测试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>

我有一个多模块项目,其中父POM指定(在概要文件中)maven jarsigner插件的配置和使用,以对项目生成的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>

签名
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
  • 安装:安装
这会导致一个未签名的测试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。。。请参阅示例和许多相关的相关问题。当然,似乎没有系统地解决这一问题:-/