构建AWS SDK Jar以导入单个包

时间:2016-04-06 09:06:42

标签: java maven amazon-web-services amazon-s3 jar

我现在只想将Java AWS SDK用于S3。 因此,我不想导入整个AWS SDK jar文件,而是只导入用于访问我的S3存储桶的必要软件包(IDE:Netbeans)。

要做到这一点,我读到我应该使用Maven来构建我需要的jar。

我尝试了两种方法,但似乎还没有包含我正在构建的jar中的所有aws-java-sdk-s3依赖项。

第一种方法

1)我从https://github.com/aws/aws-sdk-java

下载了压缩的aws-sdk-java文件夹

2)我解压缩到本地文件夹。

3)我在我的控制台中导航到aws-java-sdk-s3(即:pom所在的位置)文件夹,然后输入“mvn clean install”。

虽然这会构建一个jar文件(位于aws-java-sdk-s3/target),但jar不包含POM文件中指定的依赖项(例如:它不包括我需要的核心包中的BasicAWSCredentials类)。

第二种方法 更改位于aws-java-sdk-master文件夹中的POM文件,以便通过添加以下内容导入BOM并指定我的要求(S3):

<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>com.amazonaws</groupId>
      <artifactId>aws-java-sdk-bom</artifactId>
      <version>1.10.67</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>
<dependencies>
  <dependency>
    <groupId>com.amazonaws</groupId>
    <artifactId>aws-java-sdk-s3</artifactId>
  </dependency>
</dependencies>

并删除POM中列出的所有其他依赖项(例如:junit)。

这种方法在构建DynamoDB软件包时失败,我甚至不需要构建它(我想指定它只需要S3)。

有关我做错的建议吗? 也许这里的主要问题是我是Maven的新手。

谢谢

3 个答案:

答案 0 :(得分:1)

您可以直接从maven下载您感兴趣的Jar: http://central.maven.org/maven2/com/amazonaws/aws-java-sdk-s3/1.10.66/aws-java-sdk-s3-1.10.66.jar

使用您要使用的sdk版本更新URL,您只需在项目中导入jar,无需重建它

答案 1 :(得分:0)

同样正确地更新你的pom.xml,

<dependencies>

....


<!-- AWS dependencies -->

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

....

</dependencies>

答案 2 :(得分:0)

使用Gradle对我来说效果很好。这是API doc建议的我使用的Gradle构建文件。

group 'aws.test'
version '1.0'

apply plugin: 'java'

sourceCompatibility = 1.8

repositories {
  mavenCentral()
}

buildscript {
  repositories {
      mavenCentral()
  }
  dependencies {
      classpath "io.spring.gradle:dependency-management-plugin:1.0.3.RELEASE"
  }
}

apply plugin: "io.spring.dependency-management"

dependencyManagement {
  imports {
      mavenBom 'software.amazon.awssdk:bom:2.0.0-preview-12'
  }
}

dependencies {
  compile 'software.amazon.awssdk:s3'
  testCompile group: 'junit', name: 'junit', version: '4.11'
}