如果您使用Amazon Web Services并将Java用于项目,则Amazon S3是托管团队工件的理想场所。
它很容易设置,而且很便宜。 如果您对它们的功能不特别感兴趣,那么它比设置现有存储库选项(jfrog,nexus,archiva等)要简单得多。
首先,您需要指定一个支持s3的Maven旅行车。 我们将使用s3储藏车 。
让我们开始创建一个Maven项目
mvn archetype:generate -DgroupId=com.test.apps -DartifactId=S3WaggonTest -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
我们将添加一个简单的服务。
package com.test.apps;
public class HelloService {
public String sayHello() {
return "Hello";
}
}
然后,我们将添加Maven旅行车,该旅行车将上载并获取二进制文件到s3。
<build>
<extensions>
<extension>
<groupId>com.gkatzioura.maven.cloud</groupId>
<artifactId>s3-storage-wagon</artifactId>
<version>1.0</version>
</extension>
</extensions>
</build>
然后,我们将创建将托管我们的工件的s3存储桶。
aws s3 createbucket artifactbucket.
现在我们创建了存储桶。 然后我们将在我们的Maven项目中设置分发管理。
<distributionManagement>
<snapshotRepository>
<id>my-repo-bucket-snapshot</id>
<url>s3://my-test-repo/snapshot</url>
</snapshotRepository>
<repository>
<id>my-repo-bucket-release</id>
<url>s3://my-test-repo/release</url>
</repository>
</distributionManagement>
从Maven文档
正如repositories元素在POM中指定Maven可以下载远程工件以供当前项目使用的位置和方式的地方,而distributionManagement指定此项目在部署时将在何处(以及如何)到达远程存储库。 如果未定义snapshotRepository,则存储库元素将用于快照分发。
下一步是最关键的,这与向aws进行身份验证有关。
一种简单的方法是将aws cli配置为指向存储桶所在的区域,并具有对将托管二进制文件的s3存储桶具有读写访问权限的凭据。
aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Default region name [None]: us-west-2
Default output format [None]: json
另一种方式是使用maven方式,并在〜/ .m2 / settings.xml中指定我们的AWS凭证。
<servers>
<server>
<id>my-repo-bucket-snapshot</id>
<username>EXAMPLEEXAMPLEXAMPLE</username>
<password>eXampLEkeyEMI/K7EXAMP/bPxRfiCYEXAMPLEKEY</password>
</server>
<server>
<id>my-repo-bucket-release</id>
<username>EXAMPLEEXAMPLEXAMPLE</username>
<password>eXampLEkeyEMI/K7EXAMP/bPxRfiCYEXAMPLEKEY</password>
</server>
</servers>
请注意,必须为指定的每个存储库指定凭据。
同样,我们还没有结束,因为指定存储桶的区域至关重要。
为此,您可以将其设置为Amazon方式,从而在环境变量中指定它
AWS_DEFAULT_REGION=us-east-1
或者,您可以在执行deploy命令时将其作为属性传递。
-DAWS_DEFAULT_REGION=us-east-1
现在最容易部署的部分。
mvn deploy
现在,既然已经部署了工件,则可以通过指定存储库和旅行车在另一个存储库中使用它。
<repositories>
<repository>
<id>my-repo-bucket-snapshot</id>
<url>s3://my-test-repo/snapshot</url>
</repository>
<repository>
<id>my-repo-bucket-release</id>
<url>s3://my-test-repo/release</url>
</repository>
</repositories>
<build>
<extensions>
<extension>
<groupId>com.gkatzioura.maven.cloud</groupId>
<artifactId>s3-storage-wagon</artifactId>
<version>1.0</version>
</extension>
</extensions>
</build>
而已! 接下来,您知道您的工件将被maven通过s3下载,并用作新项目中的依赖项。
翻译自: https://www.javacodegeeks.com/2018/04/host-your-maven-artifacts-using-amazon-s3.html