使用meaven打包过程中遇到的一些问题

落日映苍穹つ 2022-03-28 05:00 421阅读 0赞

使用maven-shade-plugin插件,修改后pom代码如下

  1. <plugin>
  2. <groupId>org.apache.maven.plugins</groupId>
  3. <artifactId>maven-shade-plugin</artifactId>
  4. <version>1.4</version>
  5. <executions>
  6. <execution>
  7. <phase>package</phase>
  8. <goals>
  9. <goal>shade</goal>
  10. </goals>
  11. <configuration>
  12. <transformers>
  13. <transformer
  14. implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
  15. <resource>META-INF/spring.handlers</resource>
  16. </transformer>
  17. <transformer
  18. implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
  19. <mainClass>com.fxc.rpc.impl.member.MemberProvider</mainClass>
  20. </transformer>
  21. <transformer
  22. implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
  23. <resource>META-INF/spring.schemas</resource>
  24. </transformer>
  25. </transformers>
  26. </configuration>
  27. </execution>
  28. </executions>
  29. </plugin>

再次打包,出现文件签名不合法的问题

  1. Exception in thread "main" java.lang.SecurityException: Invalid signature file digest for Manifest main attributes

再查,原来是由于某些包的重复引用,以至于打包之后的META-INF的目录下多出了一些*.SF,*.DSA,*.RSA文件所致(据说解压jar包,然后删掉这些文件再次打包错误就会消失,未确认),再次修改pom.xml,最终使用如下配置文件,运行

  1. mvn clean install -Dmaven.test.skip=true

打包成功

  1. <plugin>
  2. <groupId>org.apache.maven.plugins</groupId>
  3. <artifactId>maven-shade-plugin</artifactId>
  4. <version>1.4</version>
  5. <executions>
  6. <execution>
  7. <phase>package</phase>
  8. <goals>
  9. <goal>shade</goal>
  10. </goals>
  11. <configuration>
  12. <filters>
  13. <filter>
  14. <artifact>*:*</artifact>
  15. <excludes>
  16. <exclude>META-INF/*.SF</exclude>
  17. <exclude>META-INF/*.DSA</exclude>
  18. <exclude>META-INF/*.RSA</exclude>
  19. </excludes>
  20. </filter>
  21. </filters>
  22. <transformers>
  23. <transformer
  24. implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
  25. <resource>META-INF/spring.handlers</resource>
  26. </transformer>
  27. <transformer
  28. implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
  29. <mainClass>com.fxc.rpc.impl.member.MemberProvider</mainClass>
  30. </transformer>
  31. <transformer
  32. implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
  33. <resource>META-INF/spring.schemas</resource>
  34. </transformer>
  35. </transformers>
  36. </configuration>
  37. </execution>
  38. </executions>
  39. </plugin>

此时查看target目录下会发现xxx.jar 和original-xxx.jar,后一个不包含引用的jar包,直接运行前一个即可

  1. java -jar target/xxx.jar

java.lang.SecurityException: Invalid signature file digest for Manifest main attributes

打开META-INF目录,将*.SF,*.DSA,*.RSA文件删除,即可。应为有些包有签名,导致错误。

发表评论

表情:
评论列表 (有 0 条评论,421人围观)

还没有评论,来说两句吧...

相关阅读

    相关 AWS使用过程遇到问题

    RDS连接不上数据库的排除办法 检查RDS的安全组。初次尝试,数据库连不上;后面又重试着不使用默认的安全组进行配置,可以连上。这里有一个检测是否可以成功连接的命令,如果连