我该如何解决这些AWS导入?

时间:2017-04-05 22:57:21

标签: java maven amazon-web-services aem

在我的pom.xml中,我有这个:

<instructions>
    <Embed-Transitive>true</Embed-Transitive>
    <Export-Package>
        com.amazonaws.HttpMethod,
        com.amazonaws.services.s3.*
    </Export-Package>
    <Embed-Dependency>
        gson,
        aws-java-sdk,
        jackson-core
    </Embed-Dependency>
    ...

作为依赖,我有这些:

<dependency>
    <groupId>com.amazonaws</groupId>
    <artifactId>aws-java-sdk-s3</artifactId>
    <version>1.11.115</version>
</dependency>

<dependency>
    <groupId>com.amazonaws</groupId>
    <artifactId>aws-java-sdk-core</artifactId>
    <version>1.11.115</version>
</dependency>

当我使用mvn clean install构建我的.jar并将其上传到AEM时,我看到了这一点:

enter image description here

所有这些“额外”的红色包无法解决,我该如何解决?

在构建程序包并将程序包上传到AEM之前,如何防止这种情况发生?

2 个答案:

答案 0 :(得分:1)

红色的包是您用java import在您的类中导入的包。这些导入所依赖的依赖关系需要嵌入到<Embed-Dependency>的pom中。或者,您可以安装导出这些软件包的AEM软件包,以便解析软件包导入。

答案 1 :(得分:1)

  

当我使用mvn clean install构建我的.jar并将其上传到AEM

这不是构建AEM项目的常规方法,即您通常不会将* .jar文件上传到您的AEM实例。简而言之,您创建了一个需要安装到AEM实例的OSGi包。这个包(如果编译/构建正确)应该包含所有代码及其依赖关系的一个漂亮的小zip文件,它应该解决依赖性问题。

或者,如果您只想上传* .jar文件,那么您需要找到依赖项并将它们作为单独的jar文件上传或按照this tutorial将一个或多个jar文件转换为OSGi包并上传到您的AEM实例。这是许多第三方专有库的常见做法,但S3库很容易获得,因此可能不是最佳选择(除非您有业务案例)。

理想情况下,您的AEM项目的POM应该包含所有AWS S3依赖项,并将其与您的OSGi包打包在一起,以便组织内的其他依赖项也以标准AEM方式进行管理。

如果您使用的是Eclipse或类似的IDE,那么您可以阅读this tutorial