在我的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时,我看到了这一点:
所有这些“额外”的红色包无法解决,我该如何解决?
在构建程序包并将程序包上传到AEM之前,如何防止这种情况发生?
答案 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。