注意maven打包的filter

简介:
## 注意maven打包的filter

应用新加了往苹果APVS推消息的功能,引入了一个证书文件cert.p12,在使用时遇到如下错误:

<pre>

javapns.communication.exceptions.KeystoreException: Keystore exception: Detect premature EOF

        at javapns.communication.KeystoreManager.wrapKeystoreException(KeystoreManager.java:224)

        at javapns.communication.KeystoreManager.loadKeystore(KeystoreManager.java:79)

        at javapns.communication.KeystoreManager.loadKeystore(KeystoreManager.java:46)

        at javapns.communication.KeystoreManager.loadKeystore(KeystoreManager.java:29)

        at javapns.communication.ConnectionToAppleServer.<init>(ConnectionToAppleServer.java:61)

        at javapns.notification.ConnectionToNotificationServer.<init>(ConnectionToNotificationServer.java:17)

        at javapns.notification.PushNotificationManager.initializeConnection(PushNotificationManager.java:107)

</pre>

异常发生在导入证书时,猜猜像是读解析内容非预期的遇到EOF了,可能文件有问题。

我们的应用用maven打包,证书放在配置目录或资源目录都如此,调试了一下,改成读源文件目录下的证书文件,没问题了。这就能确定是maven打包后把文件内容改了。

去看maven脚本:

<pre>

   <plugin>

    <groupId>org.apache.maven.plugins</groupId>

    <artifactId>maven-war-plugin</artifactId>

    <version>2.1-beta-1</version>

    <configuration>

     <warName>communitypushclient</warName>

     <webResources>

      <resource>

       <directory>src/main/webapp/WEB-INF</directory>

       <filtering>true</filtering>

       <targetPath>WEB-INF</targetPath>

      </resource>

      <resource>

       <directory>../server/src/main/conf</directory>

       <filtering>true</filtering>

       <targetPath>WEB-INF</targetPath>

      </resource>

      <resource>

       <directory>../server/src/main/resources</directory>

       <filtering>true</filtering>

       <targetPath>WEB-INF/classes</targetPath>

      </resource>

     </webResources>

    </configuration>

   </plugin>

</pre>

原因很明显了,证书文件放在resources目录下,配置了filter,会对文件中变量进行替换。虽说证书文件中没有什么可替换的,但是这里maven有处理文件,用UTF-8对文件进行转码保存,文件增大了,二进制的内容完全就不对了。把<filtering>true</filtering>改成false即好了。
本文来源于"阿里中间件团队播客",原文发表时间"  2012-04-24 
相关文章
|
3月前
|
Java Maven
如何用Maven打包
如何用Maven打包
111 0
|
5月前
|
Java Maven
解决Maven打包只有100多k的问题
解决Maven打包只有100多k的问题
180 0
|
5月前
|
XML SQL Java
Maven的三种打包方式(jar、shade、assembly)
Maven的三种打包方式(jar、shade、assembly)
432 0
|
29天前
|
XML Java Maven
深入探讨Maven打包:打造精致的Zip包
本文介绍了如何使用Maven将Spring Boot项目打包并部署。首先,利用Maven Assembly Plugin创建包含JAR的ZIP文件,以便于部署和修改配置文件。该插件允许自定义打包内容和格式。在`package.xml`中定义了打包格式、依赖、脚本和资源文件的规则。接着,在POM.xml中配置插件,排除配置文件和静态资源以保持外部。最后,执行`mvn package`命令生成分发包,简化了项目的部署流程。
92 2
|
5月前
|
Java Maven
使用 maven 自动将源码打包并发布
使用 maven 自动将源码打包并发布
68 0
|
2月前
|
JSON Java Maven
SpringBoot使用git-commit-id-maven-plugin打包
【2月更文挑战第1天】 git-commit-id-maven-plugin 是一个maven 插件,用来在打包的时候将git-commit 信息打进jar中。 这样做的好处是可以将发布的某版本和对应的代码关联起来,方便查阅和线上项目的维护。至于它的作用,用官方说法,这个功能对于大型分布式项目来说是无价的。
85 0
|
2月前
|
Java Maven
Maven项目模块打包引入
Maven项目模块打包引入
28 0
|
3月前
|
Java Linux Maven
IDEA的maven的package打包
IDEA的maven的package打包
27 1
|
3月前
|
Java Maven Docker
SpringBoot项目打包部署到阿里云服务器、通过Maven插件制作Docker镜像、部署项目容器、配置生产环境
SpringBoot项目打包部署到阿里云服务器、通过Maven插件制作Docker镜像、部署项目容器、配置生产环境
114 0
|
3月前
|
Java Maven
idea执行maven打包失败:java.lang.TypeNotPresentException: Type org.springframework.boot.maven.RepackageMojo
idea执行maven打包失败:java.lang.TypeNotPresentException: Type org.springframework.boot.maven.RepackageMojo

推荐镜像

更多