2012-07-08 68 views
3

我想构建一个程序集并签名。我的问题是,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> 

回答

4

你应该尽量把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> 
+1

我做了这个改变,从那时起我得到一个错误:'Embedded error:The source must not成为一个目录。' – jabal 2012-07-08 17:15:53

+0

你可以发布完整的输出到pastebin或类似的东西吗? – khmarbaise 2012-07-09 06:49:48

+0

@khmarbaise:+1为我排序非常感谢 – 2012-07-23 07:05:16

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