Статьи

Разместите свои Maven-артефакты с помощью Amazon s3

Если вы используете Amazon Web Services и используете Java для своих проектов, то Amazon S3 — отличное место для размещения артефактов ваших команд.

Это легко установить и довольно дешево. Кроме того, это гораздо проще, чем установить один из существующих параметров хранилища (jfrog, nexus, archiva и т. Д.), Если вас не особенно интересуют их возможности.

Для начала вам нужно указать maven wagon, который поддерживает s3. Мы будем использовать хранилище S3 .

Давайте начнем с создания проекта Maven

1
mvn archetype:generate -DgroupId=com.test.apps -DartifactId=S3WaggonTest -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

Мы собираемся добавить простой сервис.

1
2
3
4
5
6
7
8
9
package com.test.apps;
 
public class HelloService {
 
    public String sayHello() {
 
        return "Hello";
    }
}

Затем мы добавим универсал maven, который будет загружать и загружать наши двоичные файлы в s3.

1
2
3
4
5
6
7
8
9
<build>
        <extensions>
            <extension>
                <groupId>com.gkatzioura.maven.cloud</groupId>
                <artifactId>s3-storage-wagon</artifactId>
                <version>1.0</version>
            </extension>
        </extensions>
    </build>

Затем мы создадим корзину s3, в которой будут размещаться наши артефакты.

1
aws s3 createbucket artifactbucket.

Теперь мы должны создать наше ведро. Затем мы установим управление дистрибуцией нашего проекта maven.

01
02
03
04
05
06
07
08
09
10
<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>

Из мавенской документации

Если в качестве элемента repositories в POM указано местоположение и способ, которым Maven может загружать удаленные артефакты для использования в текущем проекте, то distributionManagement указывает, где (и как) этот проект попадет в удаленный репозиторий при его развертывании. Элементы репозитория будут использоваться для распространения моментальных снимков, если snapshotRepository не определен.

Следующий шаг является наиболее важным, и это связано с аутентификацией в aws.
Существует простой способ настроить aws cli так, чтобы он указывал на регион, в котором находится ваша корзина, и с учетными данными, которые имеют доступ на чтение и запись к корзине s3, в которой будут размещаться ваши двоичные файлы.

1
2
3
4
5
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-путь и указать наши учетные данные aws в ~ / .m2 / settings.xml.

01
02
03
04
05
06
07
08
09
10
11
12
<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 так, как указано в переменной среды.

1
AWS_DEFAULT_REGION=us-east-1

Или вы можете передать его как свойство при выполнении команды развертывания.

1
-DAWS_DEFAULT_REGION=us-east-1

А теперь самая легкая часть, которая развертывается.

1
mvn deploy

Теперь, когда ваш артефакт был развернут, вы можете использовать его в другом репо, указав свой репозиторий и свой вагон.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
<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 и использован в качестве зависимости в вашем новом проекте.

Опубликовано на Java Code Geeks с разрешения Эммануила Гкациоураса, партнера нашей программы JCG. Смотрите оригинальную статью здесь: разместите свои артефакты Maven, используя Amazon s3

Мнения, высказанные участниками Java Code Geeks, являются их собственными.