So erstellen und veröffentlichen Sie eine nützliche Java-Bibliothek

9

Ich habe kürzlich an einer Java-Klasse gearbeitet, die Permutationen pro Objektliste generiert. Auf jeden Fall möchte ich, dass diese Bibliothek der Öffentlichkeit angeboten wird, daher habe ich mehrere Fragen:

  • Die meisten Bibliotheken, die ich sehe, haben diese komplizierte Paketbenennung, insbesondere com/ org. Gibt es dafür eine Konvention oder reicht ein permutationsPaket aus?
  • Gibt es ein bestimmtes Format, um diese zu veröffentlichen? Sollte ich separate WARs für Quellcode / Javadoc einfügen?
  • Ich habe die Dateien in einem GitHub-Repository. Ich denke, ich kann die Dateien dort bereitstellen, aber wie bringe ich die Leute dazu, mein Repo zu finden?
Amir Rachum
quelle
Die Konvention für die Paketbenennung ist die umgekehrte Internetdomäne
Daniel Moura
2
Und wenn ich keine Domain habe?
Amir Rachum
1
@Amir: Dann denke ich vielleicht amirrachum.util.permutationskönnte so etwas gut sein.
FrustratedWithFormsDesigner
Noch etwas, über das Sie wahrscheinlich nachdenken möchten - wie möchten Sie diesen Code lizenzieren? Kann jemand damit machen, was er will? Möchten Sie, dass es nur in FOSS-Projekten verwendet wird, oder ist es für Sie in Ordnung, wenn es in proprietärer Software verwendet wird (vorausgesetzt, sie schreiben Ihnen dies zu)? Schauen Sie sich die verschiedenen Open-Source-Lizenzen an (GPL, LGPL, Mozilla, Apache, MIT, BSD) und entscheiden Sie, welche Sie verwenden möchten.
MatrixFrog

Antworten:

9
  • Eine Standardmethode zum Veröffentlichen (abgesehen vom Quellcode auf GitHub) sind formelle JAR / WAR-Releases für Maven Central, mit denen viele Build-Tools (Maven, Gradle, Ant / Ivy) Bibliotheken als Abhängigkeit einbinden. Um dies zu tun, ist der beste Weg, den Nexus-Prozess zu durchlaufen .

  • Es wird auch als freundlich angesehen, dieselben JAR / WARs auf einem Code-Hosting-Repo wie Sourceforge oder GitHub zu hosten.

  • In Bezug auf Ihre Domain. Ich empfehle Ihnen, firstnamelastname.net/org/com zu kaufen und dieses als Namensschema zu verwenden (z. B. für mich ist es net.martijnverburg.foobar). Andernfalls ist die Verwendung der von @Daniel Moura vorgeschlagenen Github-Domain eine gute.

  • Um es zu veröffentlichen, bloggen Sie darüber, twittern Sie darüber, senden Sie es an Hacker-News, reddit, digg, slashdot, dzone, TSS, javaworld usw.

HTH!

Martijn Verburg
quelle
+1 für den Nexus-Prozess - sehr nützlich, um andere Entwickler dazu zu bringen, Ihre Bibliothek zu verwenden und daher zu überprüfen
Gary Rowe
3

Wenn Sie Ihren Code an GitHub gesendet haben, können Sie Ihre Bibliothek (jar) mit JitPack ganz einfach freigeben .

Ihre Benutzer müssen lediglich das Repository zu ihrem build.gradle hinzufügen:

repositories {
    mavenCentral()
    maven { url "https://jitpack.io" }
}

und dann dein GitHub-Repository als Abhängigkeit:

dependencies {
    // ...
    compile 'com.github.YourUsername:Repo:Release'
}

JitPack fungiert ähnlich wie Maven Central als Maven-Repository. Das Schöne ist, dass Sie Ihre Bibliothek nicht hochladen müssen. Hinter den Kulissen überprüft JitPack den Code von GitHub und kompiliert ihn. Wenn Sie eine neue Version auf GitHub veröffentlichen, steht sie anderen zur Verfügung.

Es gibt auch eine Anleitung zum Vorbereiten eines Projekts und Beispiele für das Hinzufügen eines Quellenglases.

Es ist nicht erforderlich, einen Domainnamen zu haben, damit Ihre groupId zu com.github.Username wird. Sie können dies auch für die Paketbenennung verwenden.

Andrejs
quelle
2

Die meisten Bibliotheken, die ich sehe, haben diese komplizierte Paketbenennung, insbesondere com / org. Gibt es eine Konvention für diese oder reicht ein Permutationspaket aus?

Es gibt Empfehlungen von Oracle zur Benennung Ihrer Pakete . Der Grund für diese Namenskonvention besteht darin, Duplikate zu minimieren. Wenn jeder einfach kurze, einfache Namen verwendet, wird es wahrscheinlicher, dass ein Projekt zwei permutationPakete enthält. Wenn ein Klassenname derselbe wäre, würde es zu Namenskonflikten kommen. Für den Entwickler kann es verwirrend werden, wenn es keine Namenskonflikte gibt, die die Auflösung der Klassen verhindern.

Wenn Sie einen Domainnamen haben, würde ich vorschlagen, diesen zu verwenden. Wenn Sie auf einem Dienst wie GitHub oder Sourceforge hosten, ist es auch ausreichend, den Pfad zu Ihrem Projekt zu verwenden. Seien Sie unabhängig davon explizit, um Konflikte oder Verwirrung zu vermeiden.

Gibt es ein bestimmtes Format, um diese zu veröffentlichen? Sollte ich separate WARs für Quellcode / Javadoc einfügen?

Es gibt kein bestimmtes Format. Zumindest Quell- und Konventionsskript (Make, Ant, Maven). Es ist schön, JARs oder WARs vorkompiliert zu haben, aber nicht unbedingt erforderlich. Einige Projekte enthalten das Javadoc in der Bibliothek, andere produzieren möglicherweise zwei JARs (eines mit Javadoc und eines ohne). Es kann auch eine gute Idee sein, Ihr Javadoc einfach im Internet zu veröffentlichen, wenn Ihre Projekthosting-Lösung dies zulässt.

Ich habe die Dateien in einem GitHub-Repository. Ich denke, ich kann die Dateien dort bereitstellen, aber wie bringe ich die Leute dazu, mein Repo zu finden?

Werben Sie dafür. Zeigen Sie es zunächst einigen Freunden. Blog darüber. Teilen Sie einen Link im Internet. Finden Sie jemanden, der ein Problem hat, das er mit dieser Bibliothek lösen kann (stellen Sie jedoch sicher, dass Sie angeben, dass Sie die Bibliothek erstellt haben).

Thomas Owens
quelle