Como criar e publicar uma biblioteca Java útil

9

Recentemente, trabalhei em uma classe Java que gera permutações por lista de objetos. De qualquer forma, eu gostaria que essa biblioteca fosse oferecida ao público, por isso tenho várias perguntas:

  • A maioria das bibliotecas que eu vejo tem esse nome de pacote complicado, incluindo especificamente com/ org. Existe uma convenção para estes ou um permutationspacote é suficiente?
  • Existe um formato específico para publicá-los? Devo incluir WARs separados para o código-fonte / javadoc?
  • Eu tenho os arquivos em um repositório GitHub. Acho que posso servir os arquivos lá, mas como faço para que as pessoas encontrem meu repositório?
Amir Rachum
fonte
A convenção de nomenclatura do pacote é o domínio de internet invertida
Daniel Moura
2
E se eu não tiver um domínio?
Amir Rachum
11
@Amir: Então eu acho que talvez algo como amirrachum.util.permutationspossa ser bom.
FrustratedWithFormsDesigner
Outra coisa em que você provavelmente deseja pensar - como deseja licenciar esse código? Alguém pode fazer o que quiser com isso? Deseja que ele seja usado apenas em projetos de software livre ou está de acordo com você se for usado em software proprietário (desde que sejam creditados)? Examine as várias licenças de código-fonte disponíveis (GPL, LGPL, Mozilla, Apache, MIT, BSD) e decida qual você deseja usar.
MatrixFrog

Respostas:

9
  • Uma maneira padrão de publicação (além do código-fonte no GitHub) é ter versões formais JAR / WAR no Maven Central, que muitas ferramentas (Maven, Gradle, Ant / Ivy) constroem usam para trazer bibliotecas como uma dependência. Para fazer isso, a melhor maneira é seguir o processo do Nexus .

  • Também é recomendável hospedar os mesmos JAR / WARs em um repositório de código, como Sourceforge ou GitHub.

  • Em termos de seu domínio. Eu recomendo que você compre firstnamelastname.net/org/com e use isso como seu esquema de nomeação (por exemplo, para mim é net.martijnverburg.foobar). Caso contrário, usar o domínio github, conforme sugerido por @Daniel Moura, é bom.

  • Para publicá-lo, blogue sobre ele, twitter, envie-o para notícias de hackers, reddit, digg, slashdot, dzone, TSS, javaworld etc.

HTH!

Martijn Verburg
fonte
+1 para o processo Nexus - muito útil na obtenção de outros desenvolvedores para uso e, portanto, rever, sua biblioteca
Gary Rowe
3

Se você enviou seu código para o GitHub, é fácil compartilhar sua biblioteca (jar) com o JitPack .

Seus usuários precisarão apenas adicionar o repositório ao build.gradle:

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

e, em seguida, seu repositório GitHub como uma dependência:

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

O JitPack age como um repositório semelhante ao Maven Central. O bom é que você não precisa enviar sua biblioteca. Nos bastidores, o JitPack verifica o código do GitHub e o compila. À medida que você publica uma nova versão no GitHub, ela fica disponível para uso de outras pessoas.

Há também um guia sobre como preparar um projeto e exemplos para adicionar um jar de fontes.

Não é necessário ter um nome de domínio para que seu groupId se torne com.github.Username. Você também pode usá-lo para nomear pacotes.

Andrejs
fonte
2

A maioria das bibliotecas que eu vejo tem esse nome de pacote complicado, incluindo especificamente com / org. Existe uma convenção para estes ou um pacote de permutações é suficiente?

Existem recomendações da Oracle sobre como nomear seus pacotes . O motivo desta convenção de nomenclatura é minimizar duplicatas. Se todo mundo simplesmente usou nomes curtos e simples, é mais provável que um projeto inclua dois permutationpacotes. Se um nome de classe fosse o mesmo, haveria conflitos de nomes. As coisas podem ficar confusas para o desenvolvedor, se não houver conflitos de nomes que impeçam a resolução das classes.

Se você tem um nome de domínio, sugiro usá-lo. Se você estiver hospedando em um serviço como o GitHub ou o Sourceforge, o caminho do seu projeto também seria suficiente. Independentemente disso, seja explícito para evitar conflitos ou confusão.

Existe um formato específico para publicá-los? Devo incluir WARs separados para o código-fonte / javadoc?

Não há formato específico. No mínimo, a fonte e uma convenção criam script (Make, Ant, Maven). É bom ter JARs ou WARs pré-compilados, mas não essencial. Alguns projetos incluem o Javadoc na biblioteca, outros podem produzir dois JARs (um com Javadoc e outro sem). Também pode ser uma boa ideia simplesmente publicar seu Javadoc na Internet, se a sua solução de hospedagem de projetos permitir.

Eu tenho os arquivos em um repositório GitHub. Acho que posso servir os arquivos lá, mas como faço para que as pessoas encontrem meu repositório?

Anuncie. Comece mostrando para alguns amigos. Blog sobre isso. Compartilhe um link na Internet. Encontre alguém que tenha um problema que ele possa resolver usando esta biblioteca (mas certifique-se de divulgar que você criou a biblioteca).

Thomas Owens
fonte