我的jar签名者插件有问题。
我在使用applet的遗留项目中,所有applet jar都需要签名。
首先,我在每个applet项目中添加了jar-signer插件。
但是我需要在applet中添加一个通用模块,所以我在这个项目中添加了jarsigner插件。
我的web项目中有一个任务maven-dependency-plugin,它将已签名的jar复制到src / main / webapp / applet
但是当我编译项目时我得到了这个错误:
java.lang.SecurityException: class X signer information does not match signer information of other classes in the same package.
我认为它是因为在我的共同项目(现已签名)中我有一些界面和我的webproject(未签名)我有实施!
我不想签署网络项目。
所以我决定删除所有项目的所有jar-signer,只将jar-signer插件添加到web-project中,如下所示:
<plugin>
<artifactId>maven-jarsigner-plugin</artifactId>
<executions>
<execution>
<id>sign</id>
<goals>
<goal>sign</goal>
</goals>
</execution>
</executions>
<configuration>
<archiveDirectory>${basedir}/src\main\webapp\applet</archiveDirectory>
<includes>
<include>**/*.jar</include>
</includes>
<excludes>
<exclude>**/*.war</exclude>
</excludes>
<keystore>${basedir}/src/main/resources/mykeystore.jks</keystore>
<alias>myalias</alias>
<storepass>mypassword</storepass>
<keypass>mypassword</keypass>
</configuration>
</plugin>
在这个目录中:${basedir}/src\main\webapp\applet
我有8个罐子和插件标志9jars,我们可以看到:
[INFO] Webapp assembled in [5206 msecs]
[INFO] Building war: d:\MarcoPolo\SVN\CASTOR_trunk\CTR_WEB\web\target\ctrweb-02.01.00.war
[INFO] [jarsigner:sign {execution: sign}]
[INFO] 9 archive(s) processed
[INFO] [jar:jar {execution: create-classes}]
[INFO] Building jar: d:\MarcoPolo\SVN\CASTOR_trunk\CTR_WEB\web\target\ctrweb-02.01.00-classes.jar
[INFO] [install:install {execution: default-install}]
[INFO] Installing d:\MarcoPolo\SVN\CASTOR_trunk\CTR_WEB\web\target\ctrweb-02.01.00.war to D:\Users\p
[INFO] Installing d:\MarcoPolo\SVN\CASTOR_trunk\CTR_WEB\web\target\ctrweb-02.01.00-classes.jar to D:
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1 minute 5 seconds
[INFO] Finished at: Thu Jul 17 11:38:19 CEST 2014
[INFO] Final Memory: 42M/142M
[INFO] ------------------------------------------------------------------------
如果我打开ctrweb-02.01.00.war我可以看到所有都签了!但我有<exclude>**/*.war</exclude>
我试着做
mvn jarsigner:sign
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Building Castor - Web war
[INFO] task-segment: [jarsigner:sign]
[INFO] ------------------------------------------------------------------------
[INFO] [jarsigner:sign {execution: default-cli}]
[INFO] 8 archive(s) processed
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3 seconds
[INFO] Finished at: Thu Jul 17 11:48:52 CEST 2014
[INFO] Final Memory: 6M/15M
[INFO] ------------------------------------------------------------------------
只签署了8个罐子。
我想只让我的jar在applet目录下进行签名,而不是jar / war在其他目录中。
有可能吗?
感谢
答案 0 :(得分:1)
在评论中回答:
我尝试用我的项目用分类器创建两个jar,一个签名 而另一个没有。在编译期间,它始终采用 非签名jar和复制它使用signed-jar,我认为 应该工作 - MançauxPierre-Alexandre 2014年7月17日12:24
是的,它的工作!我生成2个jar,一个没有分类器,另一个没有 使用分类器(签名),我的jarsigner插件使用标签存档进行签名 只有带分类器的jar签名并且在编译期间,jar 没有使用分类器,并且带有分类器的jar被复制到 applet webapp目录。所以我解决了我的所有问题! - Mançaux Pierre-Alexandre 2014年7月17日14:14