【问题标题】:Maven jarsigner plugin does not work during releaseMaven jarsigner 插件在发布期间不起作用
【发布时间】:2012-05-28 17:44:14
【问题描述】:

我需要对已发布的 jar 进行签名,并且我想使用 maven jarsigner 插件进行签名。所以我是这样添加的:

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jarsigner-plugin</artifactId>
            <version>1.2</version>
            <configuration>
                <archive>target/${myarchive}.jar</archive>
                <keystore>${key.location}</keystore>
                <storepass>${keypass}</storepass>
                <alias>${key.alias}</alias>
                <verbose>true</verbose>
            </configuration>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>sign</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

我在命令行中提供了缺少的参数。

当我运行mvn install 时,一切正常并且存档已签名。但是当我运行release:prepare release:perform 时,jarsigner 插件失败:`目标 org.apache.maven.plugins:maven-jarsigner-plugin:1.2:sign 的参数'别名'丢失或无效'

当我在调试模式下运行时,我看到以下内容:

对于mvn install

[DEBUG] Configuring mojo org.apache.maven.plugins:maven-jarsigner-plugin:1.2:sign from plugin realm ClassRealm[plugin>org.apache.m
aven.plugins:maven-jarsigner-plugin:1.2, parent: sun.misc.Launcher$AppClassLoader@6d6f0472]
[DEBUG] Configuring mojo 'org.apache.maven.plugins:maven-jarsigner-plugin:1.2:sign' with basic configurator -->
[DEBUG]   (f) alias = myalias
[DEBUG]   (f) archive = myarchive
[DEBUG]   (f) arguments = []
[DEBUG]   (f) keystore = mykeystore
[DEBUG]   (f) processAttachedArtifacts = true
[DEBUG]   (f) processMainArtifact = true
[DEBUG]   (f) project = MavenProject: com.playtech.chat:ums_supportchatapplet:12.4-SNAPSHOT @ *********\pom.xml
[DEBUG]   (f) removeExistingSignatures = false
[DEBUG]   (f) skip = false
[DEBUG]   (f) storepass = changeit
[DEBUG]   (f) verbose = true
[DEBUG] -- end configuration --

但是当我运行release:prepare release:perform 时,我看到了:

Configuring mojo org.apache.maven.plugins:maven-jarsigner-plugin:1.2:sign from plugin realm ClassRealm[plugin>org.apache.maven.plugins:maven-jarsigner-plugin:1.2, parent: sun.misc.Launcher$AppClassLoader@553f5d07]
[INFO] [DEBUG] Configuring mojo 'org.apache.maven.plugins:maven-jarsigner-plugin:1.2:sign' with basic configurator -->
[INFO] [DEBUG]   (f) archive = myarchive
[INFO] [DEBUG]   (f) arguments = []
[INFO] [DEBUG]   (f) processAttachedArtifacts = true
[INFO] [DEBUG]   (f) processMainArtifact = true
[INFO] [DEBUG]   (f) project = MavenProject: com.playtech.chat:ums_supportchatapplet:12.4.0.1 @ *****\pom.xml
[INFO] [DEBUG]   (f) removeExistingSignatures = false
[INFO] [DEBUG]   (f) skip = false
[INFO] [DEBUG]   (f) verbose = true
[INFO] [DEBUG] -- end configuration --

所以除了archive属性外,其他属性在发布时都会被忽略。

高度赞赏任何想法。

【问题讨论】:

    标签: java maven maven-3 maven-release-plugin jarsigner


    【解决方案1】:

    找到答案了。

    简而言之,-D 参数不会从命令行传递到发布插件。
    应该使用-Darguments=

    有关更多详细信息,请阅读帮助我解决此问题的 blog post

    【讨论】:

      【解决方案2】:

      在 cmd 提示符下输入此命令:

      keytool -list -keystore [keystore location here]
      

      “myalias”别名是否在该特定密钥库中?如果没有,您需要create one

      我能看到的唯一可能出错的另一件事是该密钥库的密码是否不正确。

      【讨论】:

      • 您是否阅读了整个问题?您是否看到在第二种情况下,密码根本没有传递给插件?别名都没有?
      • 您在问题的结尾提到“任何想法都受到高度赞赏”,显然他们不被欣赏,因为您不得不对任何此类想法投反对票。我怎么知道您尚未在密钥库中创建别名?对试图帮助的人有一些礼貌,这已经是为了理解你糟糕的英语。
      • 如果我给出答案,您可能会反对的另一个想法是您的插件的执行处于打包阶段。发布:准备发布:执行包阶段下游的目标吗?如果不是,插件永远不会被执行。这解释了为什么您的安装有效。
      • 任何相关的想法。不仅仅是一些偶然在你脑海中闪过的想法。如果您正在阅读整个问题,您会发现它通常可以工作,但在发布期间它不会,所以密钥库必须没问题。
      • 插件被执行。否则它没有失败。它甚至打印调试信息,我把它放在原始问题中。
      猜你喜欢
      • 2018-07-20
      • 1970-01-01
      • 2011-10-19
      • 2017-08-14
      • 1970-01-01
      • 2013-10-16
      • 2023-03-12
      • 2017-08-15
      • 1970-01-01
      相关资源
      最近更新 更多