我在哪里可以找到一些编写开源Java代码的最佳实践? 我不是在寻找关于如何编写代码的指导,而是在分发,打包,文档以及除.java文件之外的所有其他方面。撰写开源Java的最佳实践
我的目标是将我编写的模块作为开源代码发布。
编辑 - 我仍然缺少关于什么zip文件应该包含直接,具体的指示。有没有公约,或者我应该选择一些合理的结构?
我在哪里可以找到一些编写开源Java代码的最佳实践? 我不是在寻找关于如何编写代码的指导,而是在分发,打包,文档以及除.java文件之外的所有其他方面。撰写开源Java的最佳实践
我的目标是将我编写的模块作为开源代码发布。
编辑 - 我仍然缺少关于什么zip文件应该包含直接,具体的指示。有没有公约,或者我应该选择一些合理的结构?
查看Karl Fogel的书http://producingoss.com/ - 可在线获得资源。
我不知道是否会有关于“最佳做法”普遍同意,但你提到的项目可能有简单的答案:
我会试着想更多。
我认为这都归结为自动化构建测试包部署周期。理想情况下,您应该可以通过单击(或使用单个提示命令)来完成此操作。
就个人而言,我使用蚂蚁和限定deploy目标,其执行以下操作
完成这一步之后,唯一的手动步骤是通过sourceforge的网站定义一个新版本。
显然,为了使这个过程有效,你必须被测试感染 - 我为我正在实现的每个新功能编写测试。
我不知道为什么这会得到一票 - 我觉得这与我的问题完全无关。是的,自动部署和测试是很好的 - 但我在问什么要部署的细节,目录结构应该是什么,提供什么文档等等。而不是如何构建部署脚本。 – ripper234 2009-07-04 11:22:25
如果您正在寻找特定的目录结构,为什么不看现有的开源项目?我会从Jakarta Commons开始,这是一个使用频繁的软件包。
没有任何统计数据支持我,我想说许多项目使用类似于Maven指定的目录结构,即使它们本身不使用Maven(并且如果您可以通过Maven学习曲线,90%的时间它是一个很好的构建工具)。
我不加那么多,但我会建议如下:
目录结构
包装
出版
宣传您的模块(博客,论坛,微博等)
始终进行其他测试时包装或上载,意想不到的事情可能发生(丢失的文件,档案损坏等)。
如果您的项目被命名为富,那么版本XY应包装在富-XYzip并解压到foo-XY/....(换句话说,每个文件的存档中的路径应从Foo-X开始。Y /)
将Foo-X.Y/README.txt包含为基本指令作为纯文本文件。它至少应包含关于完整文档位置的信息(“请参阅文档docs/index.html”)以及关于使用的简要说明(“将lib/Foo-XYjar添加到您的类路径中”)以及重建指令(“运行“ant build”来重新生成lib和javadoc中的库文件“apidoc /”)。
如果您的项目需要额外的库来工作或编译,然后自动化。即或者让它成为一个Maven项目或者确保它与Ant Ivy一起工作。
我建议让src /下的源代码,lib /下的内置库,docs下的文档/ - 这是人们所期望的。
使用Apache Maven 2,你会得到你所需要的所有工件......一个简单的命令“MVN包网站”
我建议SourceForge上(http://sourceforge.net)为您的项目托管,因为他们有各种各样的工具(博客,wiki,源代码控制选项等),它都是免费的。
至于在zip/jar中放置什么......它取决于项目的类型。如果它是一个可重用的库,我会建议在档案的根目录下,有你的许可证和你的发行版。您可以将依赖关系放在lib子目录中,将文档放在docs子目录中。
一个例子可能会帮助你更好地...下载Jakarta Commons - Lang API(http://commons.apache.org/lang)并查看它们提供的内容。
其中一个答案是使用Maven(http://maven.apache.org)来管理你的项目,我也会推荐这个,不过如果你之前没有用过它,可能会有一点开发人员的学习曲线。
祝你好运,我希望这会有所帮助。
Book:Practical API Design Confessions of a Java Framework Architect(Jaroslav Tulach,2008,Apress)。
除了本书中的提示之外,请做一个正确的文档(评论,javadocs),并在某处公开使用样本(最好以wiki风格)。对于开发者来说,使用可能是显而易见的,但对客户端来说则不是这样(请参阅JFreeChart作为示例)。
这本书看起来不错。谢谢。你是否也将其发布在免费在线书籍的列表中(另一个问题) – 2010-07-09 21:44:24