All Projects → renaudcerrato → Appengine Maven Repository

renaudcerrato / Appengine Maven Repository

Free Private Maven repositories hosted on Google App-Engine, backed by Google Cloud Storage and deployed in less than 5 minutes.

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to Appengine Maven Repository

server
The ViUR application development framework - legacy version 2.x for Python 2.7
Stars: ✭ 12 (-94.03%)
Mutual labels:  appengine, google-cloud-storage
Micromodule
Rebuild multiple complete module structures within the module.
Stars: ✭ 192 (-4.48%)
Mutual labels:  maven
Marvin
A go-kit HTTP server for the App Engine Standard Environment
Stars: ✭ 164 (-18.41%)
Mutual labels:  appengine
Myuploader Backend
单文件上传,多文件上传,大文件上传,断点续传,文件秒传,图片上传
Stars: ✭ 177 (-11.94%)
Mutual labels:  maven
Rules jvm external
Bazel rules to resolve, fetch and export Maven artifacts
Stars: ✭ 167 (-16.92%)
Mutual labels:  maven
Jhipster4 Demo
Blog demo app with JHipster 4
Stars: ✭ 180 (-10.45%)
Mutual labels:  maven
Gatling Maven Plugin Demo
Showcase of the Gatling Plugin for Maven
Stars: ✭ 162 (-19.4%)
Mutual labels:  maven
Dhis2 Core
DHIS2 Core. Written in Java. Contains the service layer and Web API.
Stars: ✭ 199 (-1%)
Mutual labels:  maven
Bots Framework
Golang framework to build multilingual bots for messengers (Telegram, FB Messenger, Skype, Line, Kik, WeChat) hosted on AppEngine, Amazon, Azure, Heroku or standalone
Stars: ✭ 189 (-5.97%)
Mutual labels:  appengine
Maven Git Versioning Extension
This extension will virtually set project versions, based on current git branch or tag.
Stars: ✭ 178 (-11.44%)
Mutual labels:  maven
Maven Color
A colorized Maven console
Stars: ✭ 177 (-11.94%)
Mutual labels:  maven
Jitpack.io
Documentation and issues of https://jitpack.io
Stars: ✭ 2,156 (+972.64%)
Mutual labels:  maven
Sortpom
Maven plugin that helps the user sort pom.xml.
Stars: ✭ 185 (-7.96%)
Mutual labels:  maven
My Blog
🌴A simple & beautiful blogging system implemented with spring-boot & thymeleaf & mybatis My Blog 是由 SpringBoot + Mybatis + Thymeleaf 等技术实现的 Java 博客系统,页面美观、功能齐全、部署简单及完善的代码,一定会给使用者无与伦比的体验
Stars: ✭ 2,400 (+1094.03%)
Mutual labels:  maven
Drone Cache
A Drone plugin for caching current workspace files between builds to reduce your build times
Stars: ✭ 194 (-3.48%)
Mutual labels:  google-cloud-storage
Simplenet
An easy-to-use, event-driven, asynchronous network application framework compiled with Java 11.
Stars: ✭ 164 (-18.41%)
Mutual labels:  maven
Ksprefs
🚀⚡ Kotlin SharedPreferences wrapper & cryptographic preferences android library.
Stars: ✭ 176 (-12.44%)
Mutual labels:  maven
Seconds Kill
基于 Springboot + Redis + Kafka 的秒杀系统,乐观锁 + 缓存 + 限流 + 异步,TPS 从 500 优化到 3000
Stars: ✭ 180 (-10.45%)
Mutual labels:  maven
Versions Maven Plugin
Versions Maven Plugin
Stars: ✭ 199 (-1%)
Mutual labels:  maven
Datastore
(AE|Cloud) Datastore Wrapper
Stars: ✭ 198 (-1.49%)
Mutual labels:  appengine

appengine-maven-repository

Private Maven repositories hosted on Google App-Engine, backed by Google Cloud Storage, supporting HTTP Basic authentication and minimalistic user access control deployed in less than 5 minutes.

Why ?

Private Maven repositories shouldn't cost you an arm and a leg, nor requires you to become a Linux Sys-Admin to setup, and should ideally be zero maintenance and costs nothing.

Thanks to Google App-Engine's free quotas, you'll benefits for free of:

  • 5GB of storage
  • 1GB of daily incoming bandwidth
  • 1GB of daily outgoing bandwidth
  • 20,000+ storage ops per day

Moreover, no credit card is required to benefits of the quotas above.

Installation

Prerequisites

Create a new Project

First of all, you'll need to go to your Google Cloud console to create a new App Engine application:

As soon as your project is created, a default Google Cloud storage bucket has been automatically created for you which provides the first 5GB of storage for free.

Setup the Google Cloud SDK

Follow the official documentation to install the latest Google Cloud SDK. As a shorthand, you'll find below the Ubuntu/Debian instructions:

$ export CLOUD_SDK_REPO="cloud-sdk-$(lsb_release -c -s)"
$ echo "deb http://packages.cloud.google.com/apt $CLOUD_SDK_REPO main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list
$ curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
$ sudo apt-get update && sudo apt-get install google-cloud-sdk

Do not forget to install the app-engine-java component. If you installed the Google Cloud SDK using the instructions above:

$ sudo apt-get install google-cloud-sdk-app-engine-java

As a last step, configure the gcloud command line environment and select your newly created App Engine project when requested to do so:

$ gcloud init
$ gcloud auth application-default login

Configuration

Clone (or download) the source code:

$ git clone https://github.com/renaudcerrato/appengine-maven-repository.git

Update WEB-INF/users.txt to declare users, passwords and permissions:

# That file declares your users - using basic authentication.
# Minimalistic access control is provided through the following permissions: write, read, or list.
# Syntax is:
# <username>:<password>:<permission>
# (use '*' as username and password to declare anonymous users)
admin:l33t:write
john:j123:read
donald:coolpw:read
guest:guest:list

The list permission allows users to list the content of the repository but prohibits downloads. The read permission allows downloads (and implies list). The write permission allows uploads (and implies read).

Anonymous users are supported by using "*" for both username and password. For example, *:*:read will allow anonymous read access.

Deployment

Once you're ready to go live, just push the application to Google App-Engine:

$ cd appengine-maven-repository
$ ./gradlew appengineDeploy

And voilà! Your private Maven repository is hosted and running at the following address:

https://<your-project-id>.appspot.com

Usage

You'll find some usage examples in the examples folder. There's absolutely no extra steps required to fetch and/or deploy Maven artifacts to your repository: simply use your favorite Maven tools as you're used to do.

An example deploying artifacts using the maven plugin for Gradle:

apply plugin: 'java'
apply plugin: 'maven'

...

uploadArchives {
    repositories {
        mavenDeployer {
            repository(url: "https://<your-project-id>.appspot.com") {
                authentication(userName: "admin", password: "s3curepa55w0rd")
            }
            pom.version = "1.0.0"
            pom.artifactId = "test"
            pom.groupId = "com.example"
        }
    }
}

Using the above plugin, deploying artifacts to your repository is as simple as:

$ ./gradlew upload

In the other way, accessing password protected Maven repositories using Gradle only requires you to specify the credentials closure:

repositories {
    ...
    maven {
        credentials {
            username 'user'
            password 'YouCantGuess'
        }
        url "https://<your-project-id>.appspot.com"
    }
}

Ensure you do NOT commit credentials with your code. With Gradle, you can achieve this by amending the above examples using the approach specified here of moving your creds to ~/.gradle/gradle.properties and only referring to the variable names within your build.

Limitations

Google App-Engine HTTP requests are limited to 32MB - and thus, any artifacts above that limit can't be hosted.

File Management (Google Cloud File Storage)

The provided examples only provide a few gradle files that upload an installed local maven artifact. Sometimes there might be need to perform more file functions not available from gradle such as deletion. The documentation includes a button that launches a browser based file browser which presents a browser interface to perform file management.

License

Copyright 2018 Cerrato Renaud

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].