2013-10-21 41 views
15

我正在使用appengine-maven插件來構建我的Java Google App Engine項目。Maven:資源二進制文件生成後更改文件大小

我包括在WEB-INF子文件夾

的.p12證書當我建立我的應用程序,證書通過增加幾KB的文件大小。這使其無效。我也看到.jks證書也發生了同樣的情況。

我已驗證證書預先生成的有效性,並使用相同的方法來確認生成後證書的無效性。

誰能告訴我爲什麼文件大小正在改變,爲什麼它不是簡單地複製到WAR?

感謝您的幫助。

+0

您應該向我們展示您的pom或可以重現此問題的pom。 –

回答

22

另一種解決方案是通過添加下面的配置文件中禁用整個項目的.p12文件過濾:

<build> 
    ... 
    <plugins> 
    <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-resources-plugin</artifactId>     
     <configuration> 
     <nonFilteredFileExtensions> 
      <nonFilteredFileExtension>p12</nonFilteredFileExtension> 
     </nonFilteredFileExtensions> 
     </configuration> 
    </plugin> 
    </plugins> 
</build> 
9

看來,行家正在申請過濾到我的證書文件

http://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html

解決的辦法是禁用

<resource> 
    <directory>${basedir}/src/main/webapp/certs</directory> 
    <filtering>false</filtering> 
    <targetPath>WEB-INF/classes</targetPath> 
</resource> 

這允許正確讀取證書,並解決了以下異常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) 
0

我通過移動」的.p12' 文件一級目錄解決了這個問題。因此,不是將它保存在WEB-INF中,而是將其移至「webapp」目錄。沒有過濾發生在那裏。