【问题标题】:Sign a jar file created with maven-assembly plugin签署使用 maven-assembly 插件创建的 jar 文件
【发布时间】:2012-07-08 16:22:52
【问题描述】:

我想构建一个程序集,然后对其进行签名。我的问题是 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>

【问题讨论】:

    标签: java maven jar-signing


    【解决方案1】:
        <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】:

      您应该尝试将 maven-assembly-plugin 放入 prepare-package 阶段而不是 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>
      

      【讨论】:

      • 我做了这个更改,从那时起我收到错误消息Embedded error: The source must not be a directory.
      • 你能将完整的输出发布到 pastebin 或类似的东西吗?
      • @khmarbaise : +1 为我排序 非常感谢
      • 插件有效。我想你的配置可能是错误的......
      【解决方案3】:

      更改 POM 中插件的顺序。顺序在 Maven 中是相关的。再次运行mvn install 并查看输出日志。您应该能够从日志中看到操作的顺序。

      【讨论】:

      • 改变插件的顺序有效! jar 签名应该在最后!
      猜你喜欢
      • 2014-05-19
      • 1970-01-01
      • 2011-01-02
      • 2016-09-05
      • 2021-02-21
      • 1970-01-01
      • 2016-08-28
      • 2010-11-28
      • 1970-01-01
      相关资源
      最近更新 更多