我们最近开始使用适用于S3和SES的AWS API,因此我们根据文档的要求在依赖项中添加了此项:
compile group: 'com.amazonaws', name: 'aws-java-sdk', version: '1.11.48'
但我们的WAR文件从仅仅66Mb增长到接近150Mb。有没有办法减少亚马逊代码的开销,因为它淹没了我们的Perm Gen并获得了OOM。我暂时增加了我们的Perm Gen,但是如果我能删除不必要的代码,我可能会再次降低我们的Perm Gen。
任何削减依赖关系的官方方式?
答案 0 :(得分:1)
拉入整个AWS SDK。如果您只想使用特定服务,则可以包含这些特定的SDK组件。
例如,要仅包含SDK的S3和DynamoDB组件:
compile group: 'com.amazonaws', name: 'aws-java-sdk-s3', version: '1.11.48'
compile group: 'com.amazonaws', name: 'aws-java-sdk-dynamodb', version: '1.11.48'
您可以通过查看project on GitHub。
来查看不同的组件答案 1 :(得分:1)
AWS SDK for Java根据各自的服务分为包。
SDK文档建议使用Maven导入单个包。
使用Maven,将SDK for Java的BOM添加到您的pom.xml
文件中作为依赖项:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-bom</artifactId>
<version>1.11.22</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
然后,您可以指定要导入的各个包:
<dependencies>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-s3</artifactId>
</dependency>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-ses</artifactId>
</dependency>
</dependencies>
来源:http://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/setup-project-maven.html
答案 2 :(得分:1)
如果您在项目中仅使用 S3,我建议您查看此内容。
https://www.baeldung.com/java-aws-s3-reactive
通过这种方式,JAR 文件的大小大大减少了
就我而言,当我使用整个 AWS-SDK 时,它大约为 250 MB - 在遵循上述方法后,它已减少到 120 MB