2017-04-05 66 views
1

在我的pom.xml我有這樣的:如何解決這些AWS導入?

<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> 

當我建立我的.jar與mvn clean install並上傳到AEM我看到這一點:

enter image description here

什麼是紅色所有這些「額外」的軟件包,它解決不了,怎麼能我解決這些問題?

在構建並向AEM上傳程序包之前,如何防止發生這種情況?

+0

我不熟悉AEM,但這些軟件包都在覈心庫中。核心也有[一系列依賴關係](https://github.com/aws/aws-sdk-java/blob/master/aws-java-sdk-core/pom.xml)。因此,如果AEM要求您手動導出依賴關係,那麼您的工作已經完成。 – stdunbar

+0

你可以請你發佈你的'Import-Package'語句嗎?因爲我猜它被設置爲'*; resolution = optional'。這意味着,基本上Java代碼中的每個'import'語句都將被添加到捆綁包'Import-Package'列表中。這有點奇怪,因爲您會期望嵌入式jar能夠解決這些「依賴關係」。但是這些'Import-Package'包只能通過其他'Export-Package'語句來滿足。因此,如果這些「紅色」軟件包是嵌入式依賴項的一部分,您可以嘗試執行' *'。 – Jens

回答

1

紅色軟件包是您導入的軟件包,它們是帶有java import的類。這些進口產品的依賴關係需要被嵌入到你的pom中,這個<Embed-Dependency>。或者,您可以安裝導出這些軟件包的AEM軟件包,以便解析軟件包導入。

1

當我建立我的MVN的.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