I am using the appengine-maven-plugin to build my Java Google App Engine project.
I include .p12 certificates in a WEB-INF sub-folder
When I build my application, the filesize of the certificate increases by a few KB. This renders it invalid. I have seen the same happen to .jks certificates too.
I have verified the validity of the certificate pre-build and used the same method to confirm the invalidity of the post-build certificate.
Can anyone tell me why the file size is changing and why it is not simply copied to the WAR?
Thanks for your help.
Another solution is to disable filtering of .p12 files throughout your project by adding the following config:
<build>
...
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<nonFilteredFileExtensions>
<nonFilteredFileExtension>p12</nonFilteredFileExtension>
</nonFilteredFileExtensions>
</configuration>
</plugin>
</plugins>
</build>
It seems that maven was applying filtering to my certificate file
http://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html
The solution was to disable it
<resource>
<directory>${basedir}/src/main/webapp/certs</directory>
<filtering>false</filtering>
<targetPath>WEB-INF/classes</targetPath>
</resource>
This allowed the certificate to be read correctly and solved the following exception in JavaPNS
Validating keystore reference: VALID (keystore was found)
Verifying keystore content: javapns.communication.exceptions.KeystoreException:
Keystore exception: DerInputStream.getLength(): lengthTag=111, too big. at javapns.communication.KeystoreManager.wrapKeystoreException(KeystoreManager.java:178)
I solved the problem by moving '.p12' file one directory up. So instead of keeping it in WEB-INF, I moved it up to 'webapp' directory. No filtering happens there.
来源:https://stackoverflow.com/questions/19500458/maven-resource-binary-changes-file-size-after-build