签署使用maven-assembly插件创建的jar文件
问题描述:
我想构建一个程序集并签名。我的问题是,jarsigner签署不是程序集,只有独立的jar文件。你能告诉我什么问题?在使用Ant多年后,Maven对我来说似乎是“魔术”......我看不到插件合作的方式并将信息传递给对方。签署使用maven-assembly插件创建的jar文件
执行mvn install
后,我得到两个jar文件,一个叫example-1.0.0-SNAPSHOT.jar
,这是签名,一个叫example-1.0.0-jar-with-dependencies.jar
,这是不签名。我不需要独奏,只有大会,但签署。
这里是我的pom.xml:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jarsigner-plugin</artifactId>
<version>1.2</version>
<executions>
<execution>
<id>sign</id>
<goals>
<goal>sign</goal>
</goals>
</execution>
</executions>
<configuration>
<keystore>${project.basedir}\keystore\mykeystore</keystore>
<alias>myalias</alias>
<storepass>...</storepass>
<keypass>...</keypass>
</configuration>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<id>make-my-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
<configuration>
<archive>
<manifest>
<mainClass>com.example.FooBar</mainClass>
</manifest>
</archive>
<appendAssemblyId>true</appendAssemblyId>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
</plugins>
</build>
答
你应该尽量把Maven的组装插件安装到准备封装阶段,而不是包阶段:
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<id>make-my-assembly</id>
<phase>prepare-package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
...
</plugin>
答
<configuration>
<archiveDirectory>${project.build.directory}</archiveDirectory>
<includes>
<include>*.jar</include>
</includes>
<keystore>${project.basedir}/keystore/mykeystore</keystore>
<alias>keyalias</alias>
<storepass>storepass</storepass>
<keypass>keypass</keypass>
</configuration>
请参阅http://maven.apache.org/plugins/maven-jarsigner-plugin/sign-mojo.html
我做了这个改变,从那时起我得到一个错误:'Embedded error:The source must not成为一个目录。' – jabal 2012-07-08 17:15:53
你可以发布完整的输出到pastebin或类似的东西吗? – khmarbaise 2012-07-09 06:49:48
@khmarbaise:+1为我排序非常感谢 – 2012-07-23 07:05:16