[JAVA] Créer un référentiel Maven sur les services AWS S3

Au début

Lorsque vous utilisez Apache Maven, il est pratique de créer un référentiel interne, donc jusqu'à présent, nous avons construit un environnement sur un serveur Web qui peut utiliser WebDAV. Comme il peut être construit sur S3 sur AWS, il est définitivement avantageux en termes de coût, alors utilisons-le cette fois.

Environnement de préparation

L'environnement préparé est le suivant. Windows7 Pro Java 1.8 Maven 3.3.3 Eclipse4.6 Spring Boot 1.5.6.RELEASE (pour démo)

Travail AWS

AWS peut être un compte existant, mais cette fois, nous avons préparé un compte qui peut accéder à S3 par mesure de sécurité. Je pense que la politique d'accès devrait ressembler à ceci. your-bucketVeuillez réécrire le lieu par vous-même.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListAllMyBuckets"
            ],
            "Resource": "arn:aws:s3:::*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:*"
            ],
            "Resource": [
                "arn:aws:s3:::your-bucket",
                "arn:aws:s3:::your-bucket/*"
            ]
        }
    ]
}

Travail Java et Eclipse

Créez un projet Maven adapté. Je l'ai essayé dans le projet Spring Boot. Ce qui suit est un extrait, veuillez donc le réécrire si nécessaire.

pom.xml


<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <!-- (réduction) -->

  <repositories>
    <repository>
      <id>s3-repos</id>
      <name>AWS S3 Repository</name>
      <url>s3://your-bucket/</url>
    </repository>
  </repositories>

  <distributionManagement>
    <repository>
      <id>aws-snapshot</id>
      <name>AWS S3 Repository</name>
      <url>s3://your-bucket/snapshot</url>
    </repository>
  </distributionManagement>

  <dependencies>
    <dependency>
  <!-- (réduction) -->
    </dependency>
  </dependencies>


  <build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
      <!--Correspondant à des caractères déformés lors de l'exécution de Junit dans l'environnement Windows-->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
          <junitArtifactName>junit:junit</junitArtifactName>
          <encoding>UTF-8</encoding>
          <inputEncoding>UTF-8</inputEncoding>
          <outputEncoding>UTF-8</outputEncoding>
          <argLine>-Dfile.encoding=UTF-8</argLine>
          <!-- <skipTests>true</skipTests> -->
        </configuration>
      </plugin>
    </plugins>
    <extensions>
      <extension>
        <groupId>org.springframework.build</groupId>
        <artifactId>aws-maven</artifactId>
        <version>5.0.0.RELEASE</version>
      </extension>
    </extensions>
  </build>
</project>

Après cela, définissez les paramètres utilisateur à utiliser avec la commande Maven. Pour Eclipse, spécifiez Fenêtre-> Paramètres-> Maven-> Paramètres utilisateur ou spécifiez les paramètres utilisateur lorsque Maven est exécuté. Je pense qu'il est normal de définir des paramètres lors de l'exécution de Maven. Si des paramètres de proxy sont requis pour accéder à S3, ajoutez les paramètres de serveur proxy le cas échéant.

setting.xml


<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd">
  <proxies>
    <proxy>
      <id>http_proxy</id>
      <active>true</active>
      <protocol>http</protocol>
      <host>xx.xx.xx.xx</host>
      <port>xx</port>
    </proxy>
    <proxy>
      <id>https_proxy</id>
      <active>true</active>
      <protocol>https</protocol>
      <host>xx.xx.xx.xx</host>
      <port>xx</port>
    </proxy>
    <proxy>
      <id>s3_proxy</id>
      <active>true</active>
      <protocol>s3</protocol>
      <host>xx.xx.xx.xx</host>
      <port>xx</port>
    </proxy>
  </proxies>
  <servers>
    <server>
      <id>aws-release</id>
      <username>ID de la clé d'accès</username>
      <password>Clé d'accès secrète</password>
    </server>
    <server>
      <id>aws-snapshot</id>
      <username>ID de la clé d'accès</username>
      <password>Clé d'accès secrète</password>
    </server>
  </servers>
</settings>

Résultat d'exécution

Exécutez la commande mvn deploy pour vous inscrire auprès de S3. Je pense que c'est correct de basculer entre l'instantané et la publication en changeant le nom du référentiel auquel accéder. Je pense qu'il existe un autre bon moyen, mais pour le moment, c'est celui-là.

[INFO] --- maven-deploy-plugin:2.8.2:deploy (default-deploy) @ ews ---
[INFO] Uploading: s3://your-bucket/snapshot/com/example/1.0.0/sample-1.0.0.jar
[INFO] Configuring Proxy. Proxy Host: xx.xx.xx.xx Proxy Port: xx
[INFO] Uploaded: s3://your-bucket/snapshot/com/example/1.0.0/sample-1.0.0.jar (2000 KB at 1000.0 KB/sec)
[INFO] Uploading: s3://your-bucket/snapshot/com/example/1.0.0/sample-1.0.0.pom
[INFO] Uploaded: s3://your-bucket/snapshot/com/example/1.0.0/sample-1.0.0.pom (5 KB at 1.0 KB/sec)
[INFO] Downloading: s3://your-bucket/snapshot/com/example/maven-metadata.xml
[INFO] Uploading: s3://your-bucket/snapshot/com/example/maven-metadata.xml
[INFO] Uploaded: s3://your-bucket/snapshot/com/example/maven-metadata.xml (300 B at 0.1 KB/sec)

Considération

J'ai cherché sur Internet, mais je n'ai pas bien compris la procédure, alors je l'ai essayée. Je n'ai pas essayé de le retirer d'autres projets, mais si vous ne voulez pas rendre le fichier jar public, vous pouvez l'utiliser un peu.

Recommended Posts

Créer un référentiel Maven sur les services AWS S3
Créer un référentiel Maven sur AWS S3
Créez un référentiel interne Maven sur Google Cloud Storage
Gestion des dépendances dans Gradle à l'aide du référentiel Maven sur Amazon S3
Créer un serveur Minecraft sur AWS
Créer un environnement de développement Java 8 avec AWS Cloud 9
Créer un environnement avec Docker sur AWS
Comment enregistrer des images sur Heroku dans S3 sur AWS
Créer un environnement Laravel sur une instance AWS
Mémo pour créer un environnement Servlet sur EC2 d'AWS
Créer un environnement de développement Ruby on Rails sur AWS Cloud9
Cache local du référentiel Maven
Tutoriel Maven sur CentOS 7