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.
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)
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-bucket
Veuillez 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/*"
]
}
]
}
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>
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)
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