注意maven打包的filter

    xiaoxiao2024-01-09  163

    ## 注意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 
    最新回复(0)