我想构建一个程序集然后签名。我的问题是,jarsigner不是汇编,只是独立的jar文件。你能告诉我这是什么问题吗?在使用Ant多年后,Maven对我来说似乎是“魔力”。我无法看到插件合作的方式并将信息传递给对方。
执行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>
答案 0 :(得分:4)
你应该尝试将maven-assembly-plugin放入prepare-package阶段而不是包阶段:
<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>
答案 1 :(得分:3)
<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
答案 2 :(得分:1)
更改POM中插件的顺序。顺序在Maven中是相关的。再次运行mvn install
并查看输出日志。您应该能够从日志中查看操作顺序。