如何创建和发布有用的Java库


9

我最近研究了一个Java类,该类针对每个对象列表生成排列。无论如何,我想将此库提供给公众,所以我有几个问题:

  • 我看到的大多数库都具有这种复杂的包命名,特别是com/ org。是否有这些约定或permutations包装足够?
  • 是否有发布这些内容的特定格式?是否应为源代码/ javadoc包括单独的WAR?
  • 我将文件放在GitHub存储库中。我想我可以在此处提供文件,但是如何让人们找到我的存储库?

程序包命名的约定是反向互联网域
Daniel Moura

2
如果我没有域名?
Amir Rachum 2011年

1
@Amir:那我想也许amirrachum.util.permutations是不错的选择。
FrustratedWithFormsDesigner

您可能需要考虑的其他事项-您想如何许可此代码?任何人都可以用它做任何想做的事吗?您是否只希望将其用于FOSS项目中,或者如果将其用于专有软件中(如果他们相信您的话)就可以了吗?查看各种开源许可证(GPL,LGPL,Mozilla,Apache,MIT,BSD),然后确定要使用哪个许可证。
MatrixFrog 2011年

Answers:


9
  • 发布的标准方法(除了GitHub上的源代码)是将正式的JAR / WAR版本发布到Maven Central,许多构建工具(Maven,Gradle,Ant / Ivy)使用该版本将库作为依赖项引入。为此,最好的方法是完成Nexus流程

  • 将相同的JAR / WAR托管在诸如Sourceforge或GitHub之类的代码托管存储库中也被认为是友好的。

  • 就您的域名而言。我建议您购买firstnamelastname.net/org/com并将其用作您的命名方案(例如,对我来说是net.martijnverburg.foobar)。否则使用@Daniel Moura建议的github域是一个不错的选择。

  • 要对其进行公开,请在其博客上发布,然后在Twitter上发布,并将其提交给黑客新闻,reddit,digg,slashdot,dzone,TSS,javaworld等

HTH!


Nexus流程+1 -在吸引其他开发人员使用并因此检查您的库时非常有用
Gary Rowe

3

如果您已将代码推送到GitHub,则可以使用JitPack轻松共享库(jar)。

您的用户只需要将存储库添加到他们的build.gradle中:

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

然后将您的GitHub存储库作为依赖项:

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

JitPack充当类似于Maven Central的Maven存储库。令人高兴的是,您不必上载库。在后台,JitPack将从GitHub检出代码并进行编译。在GitHub上发布新版本时,其他人可以使用它。

还提供有关如何准备项目的指南以及添加源jar的示例。

不需要域名,因此您的groupId变为com.github.Username。您也可以将其用于程序包命名。


2

我看到的大多数库都具有这种复杂的软件包命名,特别是com / org。是否有这些约定或排列包足够?

来自甲骨文如何命名你的包的建议。这种命名约定的原因是为了最大程度地减少重复项。如果每个人都简单地使用短而简单的名称,则一个项目将更可能包含两个permutation软件包。如果一个类名相同,则将存在命名冲突。如果不存在妨碍类解析的命名冲突,则开发人员可能会感到困惑。

如果您有一个域名,我建议您使用它。如果您托管在GitHub或Sourceforge之类的服务上,则使用项目路径也就足够了。无论如何,要明确地防止冲突或混乱。

是否有发布这些内容的特定格式?是否应为源代码/ javadoc包括单独的WAR?

没有特定格式。至少,源代码和约定构建脚本(Make,Ant,Maven)。预编译JAR或WAR很好,但不是必需的。一些项目在库中包括Javadoc,其他项目可能会产生两个JAR(一个带有Javadoc,另一个不带有Javadoc)。如果您的项目托管解决方案允许的话,将Javadoc简单地发布在Internet上也是一个好主意。

我将文件放在GitHub存储库中。我想我可以在此处提供文件,但是如何让人们找到我的存储库?

刊登广告。首先向几个朋友展示它。关于它的博客。在Internet上共享链接。查找有问题的人,他们可以使用此库来解决(但请确保您透露自己是建立库的)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.