# Hosting Private Maven Artifact Repository In Amazon S3 [TOC] ###### tags: `aws` `s3` `maven` --- ## Overview 1. create bucket 2. create iam policy 3. create iam user 4. configure artifact project 5. deploy artifact 6. configure dependent project ## Create Bucket ```shell % aws s3api create-bucket \ --bucket <value> \ --create-bucket-configuration LocationConstraint=<value> \ --object-ownership BucketOwnerPreferred ``` ### Create CloudFront Distribution ## Create Policy ```json { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucket", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::release.somewhere.net", "arn:aws:s3:::release.somewhere.net/*", "arn:aws:s3:::snapshot.somewhere.net", "arn:aws:s3:::snapshot.somewhere.net/*" ] } ] } ``` ## Create User ## Configure Artifact Project ### `pom.xml` ```xml <distributionManagement> <repository> <id>release.somewhere.net</id> <url>s3://release.somewhere.net</url> </repository> <snapshotRepository> <id>snapshot.somewhere.net</id> <url>s3://snapshot.somewhere.net</url> </snapshotRepository> </distributionManagement> <build> <extensions> <extension> <groupId>com.gkatzioura.maven.cloud</groupId> <artifactId>s3-storage-wagon</artifactId> <version>2.3</version> </extension> </extensions> </build> ``` ### `~/.m2/settings.xml` ```xml <servers> <server> <id>release.somewhere.net</id> <username>…</username> <password>…</password> </server> <server> <id>snapshot.somewhere.net</id> <username>…</username> <password>…</password> </server> </servers> ``` ## Deploy Artifact To S3 Bucket ```shell % mvn clean deploy ``` ## Configure Dependent Project ### `pom.xml` ```xml <dependencies> <dependency> <groupId>…</groupId> <artifactId>…</artifactId> <version>…</version> </dependency> </dependencies> <repositories> <repository> <id>release.somewhere.net</id> <url>s3://release.somewhere.net</url> </repository> </repositories> ```
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up