Giter Club home page Giter Club logo

dzikoysk / reposilite Goto Github PK

View Code? Open in Web Editor NEW
1.2K 17.0 161.0 116.64 MB

Lightweight and easy-to-use repository management software dedicated for the Maven based artifacts in the JVM ecosystem 📦

Home Page: https://reposilite.com

License: Apache License 2.0

HTML 0.46% Dockerfile 0.17% JavaScript 10.27% Vue 11.56% CSS 0.96% Shell 0.26% Kotlin 75.65% Java 0.67%
maven repository-management deploy maven-repository artifact-repository-manager repository-manager gradle sbt javalin hacktoberfest

reposilite's Introduction

Reposilite


Lightweight and easy-to-use repository manager for Maven based artifacts in JVM ecosystem. This is simple, extensible and scalable self-hosted solution to replace managers like Nexus, Archiva or Artifactory, with reduced resources consumption.


Preview

Installation

To run Reposilite for your personal needs you should assign around 20MB of RAM and at least Java 11+ installed.
For huge public repositories you can adjust memory limit and even size of used thread pools in the configuration.

# Launching a standalone JAR file
$ java -Xmx32M -jar reposilite-3.5.10.jar

# Using the official Docker image
$ docker pull dzikoysk/reposilite:3.5.10

# Using the official Helm chart
$ helm repo add reposilite https://helm.reposilite.com/
$ helm repo update
$ helm install reposilite/reposilite

Visit official guide to read more about extra parameters and configuration details.

Publications

Reposilite 3.x:

Reposilite 2.x:

Supporters

Thanks to all contributors and people that decided to support my work financially ❤️

Active GitHub Sponsors milkyway0308, andrm, rdehuyss, joshuasing, insertt, GotoFinal, mcebular, Koressi, tipsy, Kamilkime, that-apex, TheFruxz, SirEndii, FlawCra, crejk, Rollczi, Jan Bojarczuk,
All time milkyway0308, rdehuyss, andrm, zzmgck, insertt, joshuasing, Koressi, GotoFinal, tipsy, mcebular, maxant, alexwhb, Douglas Lawrie, SirEndii, that-apex, Kamilkime, FlawCra, crejk, Rollczi, Zur13, mattwelke, Andreas R., TheFruxz, oskarscot, Szczurowsky, zugazagoitia, EthanDevelops, bmstefanski, neg4n, escv, scheidtp, Lukas P., arthurr0, shitzuu, peter-jerry-ye, Rob, sebba-dev, mufinlive, bopke, asikkema, Jan Bojarczuk

\(^-^)/ The list is updated periodically and entries are sorted by aggregated total payment size of the given person.

For developers

Recommended tool to develop backend module is IntelliJ IDE, for frontend it might be e.g. VSC.

# Run only backend through CLI
$ ./gradlew run

# Run only frontend
$ cd reposilite-frontend && npm i && npm run full

# Run only Reposilite site
$ cd reposilite-site/website && npm i && npm run start

Stack

Reposilite 3.x

Reposilite 2.x

Reposilite 1.x

reposilite's People

Contributors

bergerkiller avatar chachydev avatar codesplode avatar dependabot[bot] avatar dzikoysk avatar evernife avatar fklappan avatar github-actions[bot] avatar houkunlin avatar insertt avatar jolheiser avatar joshuasing avatar justpyrrha avatar minecraftschurli avatar mkrueger92 avatar northpl93 avatar pauliesnug avatar rchomczyk avatar rebarbora-mckvak avatar robsl2314 avatar rollczi avatar sagesphinx63920 avatar saladoc avatar sudhinm avatar tree4free avatar upcraftlp avatar withoutaname25 avatar wvffle avatar zbynek avatar zrdzn avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

reposilite's Issues

Support for proxy repositories

Do I correctly understand that the proxy repository currently is not working which means I can't use it a replacement for a Nexus/Artifactory ?

mvn deploy issue

Hello.

mvn deploy put files under ./repositories,
but when asked for artifact nanomaven is looking into ./repositories/releases

Am I missing something or is it a bug?

StringIndexOutOfBoundsException in some invalid metadata requests

Catched using status command

12:35:41.479 ERROR |  Latest exception: java.lang.StringIndexOutOfBoundsException: String index out of range: -1
        at java.lang.String.substring(String.java:1967)
        at org.panda_lang.nanomaven.metadata.MetadataService.generateSnapshotMetadata(MetadataService.java:97)
        at org.panda_lang.nanomaven.metadata.MetadataService.generateMetadata(MetadataService.java:64)
        at org.panda_lang.nanomaven.repository.DownloadController.serve(DownloadController.java:92)
        at org.panda_lang.nanomaven.repository.RepositoryController.serveOrCatch(RepositoryController.java:58)
        at org.panda_lang.nanomaven.repository.RepositoryController.serve(RepositoryController.java:46)
        at org.panda_lang.nanomaven.NanoHttpServer.serve(NanoHttpServer.java:55)
        at fi.iki.elonen.NanoHTTPD$HTTPSession.execute(NanoHTTPD.java:945)
        at fi.iki.elonen.NanoHTTPD$ClientHandler.run(NanoHTTPD.java:192)
        at java.lang.Thread.run(Thread.java:748)

Command Line usage seemed not working

If I start nanomaven I get a list of commands like:

19:13:36.027 INFO | NanoMaven 2.2.2 Commands:
19:13:36.027 INFO |   help - List available commands
19:13:36.027 INFO |   status - Display metrics
19:13:36.027 INFO |   tokens - List all generated tokens
19:13:36.027 INFO |   keygen <path> <alias> - Generate a new access token for the given path
19:13:36.027 INFO |   purge - Clear cache
19:13:36.027 INFO |   stop - Shutdown server
19:13:36.027 INFO | 

But unfortunately it does not change a thing If I give them on command line like this:

java -jar nanomaven-2.2.2.jar help

If I correctly understand the code. The command line args are not given to NanoMaven:

NanoMaven nanoMaven = new NanoMaven();
nanoMaven.launch()

which means from my understanding that could not work that way. Maybe I misunderstand a thing here. Maybe you can enlighten that a little bit?

Replace config implementation

PandaConfiguration is removed from the latest version of Panda and in some cases it may miss some configuration nodes.

Cannot retrieve snapshot dependencies

This is against version 2.1.2.

I have two problems. If I publish sources, which is published after the jar, then when gradle tries to retrieve the latest jar it does this:

http://localhost:4567/snapshot/xx/xx/xxx/xxxx/1.53-SNAPSHOT/maven-metadata.xml
http://localhost:4567/snapshot/xx/xx/xxx/xxxx/1.53-SNAPSHOT/iPayUtils-1.53-20200513.061306-4-sources-2.pom
http://localhost:4567/snapshot/xx/xx/xxx/xxxx/1.53-SNAPSHOT/iPayUtils-1.53-20200513.061306-4-sources-2.jar

So it only retrieves sources. Probably thinks that is the latest artifact.

If I don't publish sources then gradle ends up asking for this:
http://localhost:4567/snapshot/xx/xx/xxx/xxxxx/1.53-SNAPSHOT/xxxxx-1.53-20200513.063347-1-1.jar

The build number is repeated at the end and so it doesn't find it. The maven-metadata.xml downloaded is:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<metadata>
    <groupId>xxx</groupId>
    <artifactId>xxx</artifactId>
    <version>1.53</version>
    <versioning>
        <release>xxx-1.53-20200513.063347-1</release>
        <latest>xxx-1.53-20200513.063347-1</latest>
        <snapshot>
            <timestamp>20200513.063347-1</timestamp>
            <buildNumber>1</buildNumber>
        </snapshot>
        <snapshotVersions>
            <snapshotVersion>
                <extension>jar</extension>
                <value>xxx-1.53-20200513.063347-1</value>
                <updated>20200513.063347-1</updated>
            </snapshotVersion>
        </snapshotVersions>
        <lastUpdated>20200513063347</lastUpdated>
    </versioning>
</metadata>

This is what I get from artifactory for the same setup. A few difference I don't know the impact of, but the updated field looks different and does not include the build number, maybe that's the issue?

<?xml version="1.0" encoding="UTF-8"?>
<metadata>
  <groupId>xxx</groupId>
  <artifactId>xxx</artifactId>
  <version>1.53-SNAPSHOT</version>
  <versioning>
    <snapshot>
      <timestamp>20200513.063915</timestamp>
      <buildNumber>1</buildNumber>
    </snapshot>
    <lastUpdated>20200513063916</lastUpdated>
    <snapshotVersions>
      <snapshotVersion>
        <extension>jar</extension>
        <value>1.53-20200513.063915-1</value>
        <updated>20200513063915</updated>
      </snapshotVersion>
      <snapshotVersion>
        <extension>pom</extension>
        <value>1.53-20200513.063915-1</value>
        <updated>20200513063915</updated>
      </snapshotVersion>
    </snapshotVersions>
  </versioning>
</metadata>

Snapshot dependency resolution issue

Hi

I am just trying out nanomaven. I published a snapshot version with gradle, but then another gradle project could not download it.

The files are there:

maven-metadata.xml       MyProj-1.53-20200508.201309-1.jar       MyProj-1.53-20200508.201309-1.pom       MyProj-1.53-20200508.201309-1-sources.jar
maven-metadata.xml.md5   MyProj-1.53-20200508.201309-1.jar.md5   MyProj-1.53-20200508.201309-1.pom.md5   MyProj-1.53-20200508.201309-1-sources.jar.md5
maven-metadata.xml.sha1  MyProj-1.53-20200508.201309-1.jar.sha1  MyProj-1.53-20200508.201309-1.pom.sha1  MyProj-1.53-20200508.201309-1-sources.jar.sha1

The Maven metadata file:

<?xml version="1.0" encoding="UTF-8"?>
<metadata>
  <groupId>my.path</groupId>
  <artifactId>MyProj</artifactId>
  <version>1.53-SNAPSHOT</version>
  <versioning>
    <snapshot>
      <timestamp>20200508.201309</timestamp>
      <buildNumber>1</buildNumber>
    </snapshot>
    <lastUpdated>20200508201309</lastUpdated>
  </versioning>
</metadata>

But when used as a dependency it doesn't get resolved:

      Searched in the following locations:
      http://nanoserve:4567/snapshots/my/path/MyProj/1.53-SNAPSHOT/maven-metadata.xml
      http://nanoserve:4567/snapshots/my/path/MyProj/1.53-SNAPSHOT/MyProj-1.53-SNAPSHOT.pom
      http://nanoserve:4567/snapshots/my/path/MyProj/1.53-SNAPSHOT/MyProj-1.53-SNAPSHOT.jar

Is this an issue or am I doing something strange?

HEAD request

Hello.
Please consider adding HEAD request handling.
For some reason, Maven is performing such.

[04.10.2018 18:15:46.106][NanoHttpd Request Processor (#20)/DEBUG] /io/pivotal/rti4t-gemfire/3.1.0-v95/rti4t-gemfire-3.1.0-v95.pom | {} | HEAD | null | {expires=0, x-forwarded-proto=http, x-forwarded-for=87.207.77.132, pragma=no-cache, x-real-ip=87.207.77.132, remote-addr=91.185.185.169, http-client-ip=91.185.185.169, cache-store=no-store, host=maven.myatos.eu, connection=close, cache-control=no-cache, accept-encoding=gzip, user-agent=Apache-Maven/3.3.9 (Java 1.8.0_152-release; Mac OS X 10.14)}
/io/pivotal/rti4t-gemfire/3.1.0-v95/rti4t-gemfire-3.1.0-v95.pom HEAD
[04.10.2018 18:15:46.107][NanoHttpd Request Processor (#20)/ERROR] Unknown method: /io/pivotal/rti4t-gemfire/3.1.0-v95/rti4t-gemfire-3.1.0-v95.pom
Oct 04, 2018 6:15:46 PM fi.iki.elonen.NanoHTTPD$Response send
SEVERE: Could not send response to the client
java.net.SocketException: Broken pipe (Write failed)
	at java.net.SocketOutputStream.socketWrite0(Native Method)
	at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:111)
	at java.net.SocketOutputStream.write(SocketOutputStream.java:155)
	at java.util.zip.GZIPOutputStream.finish(GZIPOutputStream.java:164)
	at fi.iki.elonen.NanoHTTPD$Response.sendBodyWithCorrectEncoding(NanoHTTPD.java:1665)
	at fi.iki.elonen.NanoHTTPD$Response.sendBodyWithCorrectTransferAndEncoding(NanoHTTPD.java:1657)
	at fi.iki.elonen.NanoHTTPD$Response.send(NanoHTTPD.java:1624)
	at fi.iki.elonen.NanoHTTPD$HTTPSession.execute(NanoHTTPD.java:957)
	at fi.iki.elonen.NanoHTTPD$ClientHandler.run(NanoHTTPD.java:192)
	at java.lang.Thread.run(Thread.java:748)

Support token revocation

Currently, there is no way to revoke existing tokens, so if there would be a situation where user token has been leaked, there is no "clean" (by clean I mean not manually editing storage file) way to delete it.

Dockerize Reposilite

Introduction

First of all, I congratulate you. It has been a very successful work.

We are developing projects and libraries with Java. We need to share JAR files to use them. So we were looking for a lightweight solution and I can say that we found what we were looking for in this project.

Proposal

Have you ever thought of prepare a Docker Image for NanoMaven? Or do you have this in your plans? It may be useful to have a ready to use Docker Image. There are some lightweight base Docker Images which contains Java environment. They could be used as base image.

Logowanie

Cześć, jak się zalogować do nanomavena?

Invalid xml in maven-metadata-remote.xml while publishing snapshot

Attempting to publish a snapshot results in the below exception in gradle due to the maven-metadata-remote.xml not containing valid xml...

metadata-remote.xml contains:

Empty build metadata

The Exception:

Caused by: org.sonatype.aether.RepositoryException: Could not parse metadata ..../build/tmp/publishJavaPublicationToNanoRepository/xx/xx/xxxx/xxxxx/1.53-SNAPSHOT/maven-metadata-remote.xml: only whitespace content allowed before start tag and not E (position: START_DOCUMENT seen E... @1:1) at org.apache.maven.repository.internal.MavenMetadata.read(MavenMetadata.java:105) at org.apache.maven.repository.internal.MavenMetadata.merge(MavenMetadata.java:69) at org.sonatype.aether.impl.internal.DefaultDeployer.upload(DefaultDeployer.java:410) ... 57 more Caused by: org.codehaus.plexus.util.xml.pull.XmlPullParserException: only whitespace content allowed before start tag and not E (position: START_DOCUMENT seen E... @1:1) at org.codehaus.plexus.util.xml.pull.MXParser.parseProlog(MXParser.java:1528) at org.codehaus.plexus.util.xml.pull.MXParser.nextImpl(MXParser.java:1407) at org.codehaus.plexus.util.xml.pull.MXParser.next(MXParser.java:1105) at org.apache.maven.artifact.repository.metadata.io.xpp3.MetadataXpp3Reader.read(MetadataXpp3Reader.java:1193) at org.apache.maven.artifact.repository.metadata.io.xpp3.MetadataXpp3Reader.read(MetadataXpp3Reader.java:1122) at org.apache.maven.repository.internal.MavenMetadata.read(MavenMetadata.java:97) ... 59 more

Repository browser

Allow to browse repository through the frontpage - display indexed files

NPE during artifact initialization

/releases/org/panda-lang/nanomaven/maven-metadata.xml.md5 GET
java.lang.NullPointerException
        at java.util.Arrays.stream(Arrays.java:5004)
        at java.util.stream.Stream.of(Stream.java:1000)
        at org.panda_lang.nanomaven.repository.Artifact.<init>(Artifact.java:37)
        at org.panda_lang.nanomaven.repository.Repository.get(Repository.java:53)
        at org.panda_lang.nanomaven.repository.DownloadController.serve(DownloadController.java:78)
        at org.panda_lang.nanomaven.repository.RepositoryController.serveOrCatch(RepositoryController.java:53)
        at org.panda_lang.nanomaven.repository.RepositoryController.serve(RepositoryController.java:43)
        at org.panda_lang.nanomaven.NanoHttpServer.serve(NanoHttpServer.java:54)
        at fi.iki.elonen.NanoHTTPD$HTTPSession.execute(NanoHTTPD.java:945)
        at fi.iki.elonen.NanoHTTPD$ClientHandler.run(NanoHTTPD.java:192)
        at java.lang.Thread.run(Thread.java:748)

Reposilite shows NanoMaven in status

Currently if you give a status command on the console you will get this:

20:30:42.843 INFO | Reposilite 2.3.0 Commands:
20:30:42.843 INFO |   help - List available commands
20:30:42.843 INFO |   status - Display metrics
20:30:42.843 INFO |   tokens - List all generated tokens
20:30:42.843 INFO |   keygen <path> <alias> - Generate a new access token for the given path
20:30:42.843 INFO |   purge - Clear cache
20:30:42.844 INFO |   stop - Shutdown server
20:30:42.844 INFO | 
status
20:30:44.176 INFO | 
20:30:44.176 INFO | NanoMaven 2.3.0 Status
20:30:44.177 INFO |   Active: true
20:30:44.180 INFO |   Uptime: 0.02min
20:30:44.180 INFO |   Memory usage of process: 10.00M
20:30:44.180 INFO |   Cached elements: 0
20:30:44.197 INFO | 

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.