Maven:资源二进制文件在构建后更改文件大小

时间:2013-10-21 16:58:33

标签: java google-app-engine maven ssl javapns

我正在使用appengine-maven-plugin来构建我的Java Google App Engine项目。

我在WEB-INF子文件夹中包含.p12证书

构建应用程序时,证书的文件大小增加了几KB。这使它无效。我也看到过.jks证书也是如此。

我已经验证了预构建证书的有效性,并使用相同的方法来确认构建后证书的无效性。

任何人都可以告诉我为什么文件大小正在改变以及为什么它不是简单地复制到WAR?

感谢您的帮助。

3 个答案:

答案 0 :(得分:28)

另一种解决方案是通过添加以下配置来禁用整个项目中.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>

答案 1 :(得分:9)

似乎maven正在对我的证书文件应用过滤

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>

这样可以正确读取证书并解决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)

答案 2 :(得分:0)

我通过将'.p12'文件移动到一个目录来解决问题。因此,我没有将其保存在WEB-INF中,而是将其移至“webapp”目录。那里没有过滤。