Maven项目集成AWS SNS时无法解析software.amazon.awssdk.auth.credentials
问题描述
在Maven项目(AEM环境)中集成AWS SNS时,部署代码遇到以下OSGI启动错误:
Could not start bundle aem-myproject.core [622]. Reason: {}. Will retry. org.osgi.framework.BundleException: Unable to resolve aem-myproject.core [622](R 622.69): missing requirement [aem-myproject.core [622](R 622.69)] osgi.wiring.package; (osgi.wiring.package=software.amazon.awssdk.auth.credentials) Unresolved requirements: [[aem-myproject.core [622](R 622.69)] osgi.wiring.package; (osgi.wiring.package=software.amazon.awssdk.auth.credentials)] at org.apache.felix.framework.Felix.resolveBundleRevision(Felix.java:4368) at org.apache.felix.framework.Felix.startBundle(Felix.java:2281) at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:998) at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:984) at org.apache.sling.installer.core.impl.tasks.BundleStartTask.execute(BundleStartTask.java:97) [org.apache.sling.installer.core:3.9.0.B002] at org.apache.sling.installer.core.impl.OsgiInstallerImpl.doExecuteTasks(OsgiInstallerImpl.java:914) [org.apache.sling.installer.core:3.9.0.B002] at org.apache.sling.installer.core.impl.OsgiInstallerImpl.executeTasks(OsgiInstallerImpl.java:749) [org.apache.sling.installer.core:3.9.0.B002] at org.apache.sling.installer.core.impl.OsgiInstallerImpl.run(OsgiInstallerImpl.java:298) [org.apache.sling.installer.core:3.9.0.B002] at java.base/java.lang.Thread.run(Thread.java:834)
已在POM中添加以下依赖,但仍无法解析software.amazon.awssdk.auth.credentials包:
<dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>aws-sdk-java</artifactId> <version>2.20.2</version> <scope>provided</scope> </dependency> <!-- https://mvnrepository.com/artifact/software.amazon.awssdk/auth --> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>auth</artifactId> <version>2.20.2</version> </dependency>
需要导入的类:
import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.sns.SnsClient; import software.amazon.awssdk.services.sns.model.CreateTopicRequest; import software.amazon.awssdk.services.sns.model.CreateTopicResponse; import software.amazon.awssdk.services.sns.model.SnsException;
解决方案
1. 替换聚合包依赖为SNS专用依赖
AWS SDK v2采用模块化设计,aws-sdk-java是聚合包,且provided作用域会让Maven认为该依赖由运行环境提供,但AEM容器并不包含AWS SDK的OSGI包,这是导致依赖无法解析的核心原因。
移除原有的aws-sdk-java依赖,添加SNS专用依赖(默认compile作用域即可):
<dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>sns</artifactId> <version>2.20.2</version> </dependency>
2. 显式补充必要的基础依赖
sns依赖会间接引入auth和regions,但如果仍出现缺失问题,可以显式添加这两个依赖确保覆盖:
<dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>auth</artifactId> <version>2.20.2</version> </dependency> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>regions</artifactId> <version>2.20.2</version> </dependency>
3. 验证OSGI导入配置
确保Maven Bundle Plugin生成的Import-Package包含所需的AWS SDK包,若有自定义配置需手动补充:
<plugin> <groupId>org.apache.felix</groupId> <artifactId>maven-bundle-plugin</artifactId> <extensions>true</extensions> <configuration> <instructions> <Import-Package> software.amazon.awssdk.auth.credentials, software.amazon.awssdk.regions, software.amazon.awssdk.services.sns.*, * </Import-Package> </instructions> </configuration> </plugin>
4. 清理重构项目
执行以下命令清理缓存并重新构建,确保依赖被正确下载和打包:
mvn clean install -PautoInstallPackage
内容的提问来源于stack exchange,提问作者Mario R
相关产品推荐
相关产品推荐

