Minimalistic Maven repository manager
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Paweł Płazieński 4da129e97b Add docker image creation 2 years ago
src Allow matching group prefix 9 months ago
.gitignore Add gitignores 3 years ago
LICENSE.md Add license file (GPL) 3 years ago
README.md Fix typos 3 years ago
findbugs-known.xml Move repository implementation into separate package 3 years ago
pom.xml Add docker image creation 9 months ago

README.md

Repositable

Minimalistic Maven Repository Manager.

Introduction

Repositable is a extremely minimal, but fully-functional maven repository manager. It stores artifacts as files and generates metadata from their listing. It is meant to be simple alternative to Artifactory or Nexus or Archiva, that has no web UI, but consumes much less memory. Its targeted at individuals that want to code and just publish artifacts.

Repositable is written in Java as a single-jar application with embedded HTTP server.

Supported features:

  • Multiple named repositories,
  • Authentication: anybody can download artifacts, only named users can upload,
  • Virtual repositories: merging multiple repository to be visible as one,
  • Repository filters: allowing only specified group of artifacts to be uploaded to repository,

Repositable is by design configured by single XML configuration.

How to install

Download jar-with-dependencies jar from releases section, prepare a configuration file and just run jar:

java -jar repositable-x.x.x-jar-with-dependencies.jar <configuration>

Configuration

Configuration is self-explanatory:

<server>
    <http>
        <port>20380</port>
        <hostname>your.boundhostname.example.org</hostname>
	    <workerCount>3</workerCount>
    </http>
    <users>
        <user id="first">
            <username>my-username-first</username>
            <password>plaintextpassword</password>
        </user>
        <user id="second">
            <username>second-username</username>
            <password>otherplaintextpassword</password>
        </user>
    </users>
    <repository name="snapshots">
        <location>/opt/storage/snapshots</location>
        <filters>
            <group>com.yourgroup</group>
            <snapshots />
        </filters>
        <uploaders>
            <user ref="first" />
            <user ref="second" />
        </uploaders>
    </repository>
    <repository name="releases">
        <location>/opt/storage/releases</location>
        <filters>
            <group>org.yourgroup</group>
            <releases />
        </filters>
        <uploaders>
            <user ref="second" />
        </uploaders>
    </repository>
    <virtual name="all">
        <sources>
            <repository ref="snapshots" />
            <repository ref="releases" />
        </sources>
    </virtual>
</server>