Cómo crear y publicar una biblioteca Java útil

9

Recientemente he trabajado en una clase de Java que genera permutaciones por lista de objetos. En cualquier caso, me gustaría que esta biblioteca se ofrezca al público, por lo que tengo varias preguntas:

  • La mayoría de las bibliotecas que veo tienen este nombre de paquete complicado, que incluye específicamente com/ org. ¿Existe una convención para estos o es un permutationspaquete suficiente?
  • ¿Hay un formato específico para publicar estos? ¿Debo incluir WARs separadas para el código fuente / javadoc?
  • Tengo los archivos en un repositorio de GitHub. Supongo que puedo servir los archivos allí, pero ¿cómo hago para que la gente encuentre mi repositorio?
Amir Rachum
fuente
La convención para nombrar paquetes es el dominio de Internet invertido
Daniel Moura
2
¿Y si no tengo un dominio?
Amir Rachum el
1
@Amir: Entonces creo que algo así amirrachum.util.permutationspodría ser bueno.
FrustratedWithFormsDesigner
Algo más en lo que probablemente quiera pensar: ¿cómo desea licenciar este código? ¿Alguien puede hacer lo que quiera con él? ¿Desea que solo se use en proyectos FOSS o está bien si se usa en software propietario (siempre que lo acrediten)? Mire las diversas licencias de código abierto que existen (GPL, LGPL, Mozilla, Apache, MIT, BSD) y decida cuál quiere usar.
MatrixFrog

Respuestas:

9
  • Una forma estándar de publicar (aparte del código fuente en GitHub) es tener versiones JAR / WAR formales en Maven Central que muchas herramientas de compilación (Maven, Gradle, Ant / Ivy) usan para incorporar bibliotecas como una dependencia. Para hacer esto, la mejor manera es pasar por el proceso Nexus .

  • También se considera amigable alojar esos mismos JAR / WAR en un repositorio de código de alojamiento como Sourceforge o GitHub.

  • En cuanto a tu dominio. Le recomiendo que compre firstnamelastname.net/org/com y lo use como su esquema de nombres (por ejemplo, para mí es net.martijnverburg.foobar). De lo contrario, usar el dominio github como sugiere @Daniel Moura es bueno.

  • Para publicitarlo, bloguear sobre él, twitter sobre ello, enviarlo a hacker news, reddit, digg, slashdot, dzone, TSS, javaworld, etc.

HTH!

Martijn Verburg
fuente
1 para el proceso de Nexus - muy útil para obtener otros desarrolladores para su uso, y por lo tanto de revisión, su biblioteca
Gary Rowe
3

Si ha introducido su código en GitHub, compartir su biblioteca (jar) es fácil con JitPack .

Sus usuarios solo necesitarán agregar el repositorio a su build.gradle:

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

y luego su repositorio GitHub como una dependencia:

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

JitPack actúa como un repositorio Maven similar a Maven Central. Lo bueno es que no tiene que cargar su biblioteca. Detrás de escena, JitPack verificará el código de GitHub y lo compilará. A medida que publica una nueva versión en GitHub, está disponible para que otros la utilicen.

También hay una guía sobre cómo preparar un proyecto y ejemplos para agregar un jar de fuentes.

No es necesario tener un nombre de dominio, por lo que su groupId se convierte en com.github.Username. También puede usar eso para nombrar paquetes.

Andrejs
fuente
2

La mayoría de las bibliotecas que veo tienen este nombre de paquete complicado, que incluye específicamente com / org. ¿Existe una convención para estos o es suficiente un paquete de permutaciones?

Hay recomendaciones de Oracle sobre cómo nombrar sus paquetes . La razón de esta convención de nomenclatura es minimizar los duplicados. Si todos simplemente usaban nombres cortos y simples, es más probable que un proyecto incluya dos permutationpaquetes. Si el nombre de una clase fuera el mismo, habría conflictos de nombres. Las cosas pueden ser confusas para el desarrollador si no hay conflictos de nombres que impidan la resolución de las clases.

Si tiene un nombre de dominio, sugeriría usarlo. Si está alojando en un servicio como GitHub o Sourceforge, utilizar la ruta de acceso a su proyecto también sería suficiente. En cualquier caso, sea explícito para evitar conflictos o confusión.

¿Hay un formato específico para publicar estos? ¿Debo incluir WARs separadas para el código fuente / javadoc?

No hay un formato específico. Como mínimo, fuente y un script de compilación de convención (Make, Ant, Maven). Es bueno tener JAR o WAR precompilados, pero no es esencial. Algunos proyectos incluyen el Javadoc en la biblioteca, otros pueden producir dos JAR (uno con Javadoc y otro sin). También podría ser una buena idea simplemente publicar su Javadoc en Internet si su solución de alojamiento de proyectos lo permite.

Tengo los archivos en un repositorio de GitHub. Supongo que puedo servir los archivos allí, pero ¿cómo hago para que la gente encuentre mi repositorio?

Anúncialo. Comience mostrándolo a algunos amigos. Blog sobre eso. Comparte un enlace en Internet. Encuentre a alguien que tenga un problema que pueda resolver usando esta biblioteca (pero asegúrese de revelar que creó la biblioteca).

Thomas Owens
fuente