2017-04-05 2 views
1

私はこれがあります。これらのAWSインポートをどのように解決できますか?私の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> 

私はAEMへmvn clean installと私の.jarを構築し、それをアップロードし、私はこれを見ます

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のクラスでインポートしたパッケージです。それらのインポートの依存関係は、<Embed-Dependency>のpomに埋め込む必要があります。また、バンドルのインポートを解決するために、それらのパッケージをエクスポートするAEMバンドルをインストールすることもできます。

1

私はMVNと私の.jarを構築する場合、クリーンインストールして、AEM

これは、AEMのプロジェクトを構築するための通常の方法ではありませんし、それをアップロードするには、単に* .jarファイルをアップロードしていない通常あなた、すなわちAEMインスタンスに追加します。つまり、AEMインスタンスにインストールする必要があるOSGiバンドルを作成します。このバンドル(正しくコンパイル/ビルドされている場合)には、すべてのコードが含まれている必要があります。

また、* .jarファイルをアップロードするだけの場合は、依存関係を見つけて個々のjarファイルとしてアップロードするか、this tutorialに従って、1つまたは複数のjarファイルをOSGiバンドルに変換してAEMにアップロードする必要がありますインスタンス。これは多くのサードパーティ独自のライブラリの一般的なプラクティスですが、S3ライブラリは簡単に利用できます(ビジネスケースがない限り)。

理想的には、AEMプロジェクトのPOMは、AWS S3のすべての依存関係をOSGiバンドルでパッケージ化する必要があります。これにより、組織内の他の依存関係も標準AEMで管理されます。

EclipseなどのIDEを使用している場合は、this tutorialを読むことができます。

関連する問題