Maven jarsigner插件在发布期间无法工作

4

我需要对发布的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的参数'alias'丢失或无效'。

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

对于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属性之外,在发布期间其他属性都会被忽略。
欢迎提出任何想法。
2个回答

5

找到答案了。

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

更多细节请阅读这篇博客文章,帮助我解决了这个问题。


1
在命令提示符处输入此命令:
keytool -list -keystore [keystore location here]

那个特定密钥库中是否有“myalias”别名?如果没有,您需要创建一个

我能看到的唯一可能出错的地方是密钥库的密码不正确。


你在问题的结尾提到“任何想法都会非常感激”,但显然它们并没有得到赏识,因为你觉得有必要对任何这样的想法进行负面评价。我怎么知道你是否已经在密钥库中创建了别名?请对那些试图帮助你理解你拙劣英语的人有点礼貌。 - alex.p
如果我提出的另一个想法作为答案,你可能会反对,那就是你的插件执行在打包阶段。release:prepare release:perform目标是否在package阶段之后?如果不是,插件将永远不会被执行。这就解释了为什么你的安装可以工作。 - alex.p
任何相关的想法。不仅仅是你脑海中恰好出现的一些想法。如果您仔细阅读整个问题,您会发现通常它可以工作,但在发布期间却不能,因此密钥库必须没问题。 - Tarlog
我知道你是出于报复才给我的问题点了踩。但是你真的认为这个问题没有展示出研究努力或者没有用吗?我想不是这样的。所以这只是一种报复,就让它过去吧。我无所谓。 - Tarlog
想法在某人脑海中的通过可能是答案 - 而且它确实是相关的;在密钥库中有一个别名与jar签名者有关 - 因为别名是其正常运行所必需的。我可以看出你很烦恼,似乎我传递给你的想法越多,你就越烦恼 - 这不是你应该对待来帮助你的人的方式。再次告诉你要有点礼貌 - 看起来你是因为生气而投了反对票 - 而这与我的回答是否无关并不重要 - 因为它是相关的。我的反对票不是为了报复,就像你的反对票不是因为生气。 - alex.p
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接