Maven jar签名者插件

时间:2014-07-17 09:48:20

标签: maven jar jarsigner

我的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在其他目录中。

有可能吗?

感谢

1 个答案:

答案 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