Java发布工程良好实践

Java发布工程良好实践,java,open-source,Java,Open Source,我有一个相当简单的开源Java项目正在启动。这个过程对我来说是新的,我习惯于只为自己编写程序。在Java中发布开源项目时,需要注意哪些好的实践 以下是我能想到的一些事情,你能推荐其他的吗 版本控制存储库(您用什么来解释相关的标记/分支?外部自述文件?) 在代码中包含适当的 包括预打包的可执行JAR文件,包括文件名中的版本号 某种自述文件,解释构建/运行软件所需的外部依赖关系(文件名和放置位置是否有通用约定?) 项目的网页,在源代码和/或可执行文件中包含指向该网页的链接,以防有人首先获得源代码或

我有一个相当简单的开源Java项目正在启动。这个过程对我来说是新的,我习惯于只为自己编写程序。在Java中发布开源项目时,需要注意哪些好的实践

以下是我能想到的一些事情,你能推荐其他的吗

  • 版本控制存储库(您用什么来解释相关的标记/分支?外部自述文件?)
  • 在代码中包含适当的
  • 包括预打包的可执行JAR文件,包括文件名中的版本号
  • 某种自述文件,解释构建/运行软件所需的外部依赖关系(文件名和放置位置是否有通用约定?)
  • 项目的网页,在源代码和/或可执行文件中包含指向该网页的链接,以防有人首先获得源代码或可执行文件(而不是通过相关网页)

根据签入注释生成变更日志。分别创建一个发行说明,解释您在每个发行版中修复/添加的内容。

您必须做的一件事(因为它是Java)是为您的代码生成Javadoc。这意味着使用Javadoc符号对类和方法进行注释,以便于其他人阅读

  • 计划开发某种类型的网站。如果你的代码涉及到网络软件,人们会惊叹你是否将其作为网站的一部分

  • 开发人员喜欢好的文档和大量的示例。我见过一些项目有很多强大的代码,但是0%的文档很难完成

  • 有一个维基设置,让人们写的想法和食谱是一个明确的加分。(我推荐mediawiki)

  • 一个发布想法、讨论线索的论坛,即社区论坛也很好

  • 设置邮件列表并鼓励人们加入

  • 在你的邮件列表、维基网站上发布真实的更新,也可以在你的主网站上发布新闻,以表明你确实在做一些事情。鼓励参与。让你自己有空。这一切都会产生一种感觉,即你对插话很感兴趣,而且你愿意接受他人的意见


  • 我建议使用MAVEN作为工具来管理构建/运行所需的外部依赖关系


    您还可以使用Vulcan或类似工具进行连续的inetgration,这样就可以知道当前版本是否能正常工作。

    您也可以使用它发布代码。使用它,为您的项目创建站点、指定依赖项、优化发布非常容易……例如,Apache的Commons项目使用Maven。

    基本上您希望您的项目“开箱即用”。当人们为一项任务选择正确的开源项目时,他们会下载一堆表示支持该任务的项目,并使用最好的项目。如果一个项目需要进行大量的设置工作(例如,从20个不同的站点下载20个JAR依赖项),大多数人只能在万不得已的情况下尝试,或者干脆忽略它

    存储库:您可以尝试一些更新的存储库引擎,如或。它们简化了分支机构的开发和合并。但重要的是,请选择IDE本机支持的引擎

    依赖项:您应该使用自述文件来声明依赖项,但这还不够,或者使用来管理依赖项,在这种情况下,您只需要包含
    pom.xml
    文件,或者在发行版中包含依赖的JAR。在第二种情况下,将依赖项分为
    强制
    可选
    编译时间
    测试
    。可选依赖项的一个示例是Hibernate的字节码生成工具

    站点:Maven可能与您的软件的特定版本相关(但从未使用过)

    documentation-JavaDoc:记录所有内容,并尝试实施确保高质量JavaDoc的策略:

     /**
      * Sets the cost
      * @param decimal cost 
      */
     public void setCost(BigDecimal decimal){
    
    没用。更好的是:

     /**
      * Sets the cost, cost is in currency setted by #setCurrency. 
      * @param decimal cost, precision shoule be at least three places
      */
     public void setCost(BigDecimal decimal){
    
    文档:Javadoc是不够的。给出一些起点——最好是一个教程(我不是说那种有很多eclipse对话框截图的教程;)。示例代码也可以,或者至少在某个地方写——“阅读
    EntryPoint
    类的javadoc是开始使用这个库的好方法”。如果您只有javadocs,那么考虑使用您的库的任何人都会看到一个所有类别和包的列表,并且不知道从哪里开始

    错误跟踪软件:您一次记住的错误不会超过三个(并且会忘记一些事情)-它还将帮助您管理任务和新的想要的功能。 您可能想试试:

    • -不错,但要花钱。(最多两名开发者免费)
    • -漂亮、受欢迎、免费
    项目管理软件:这将帮助您计算发布日期、在开发人员之间分配任务等

    • -免费,没问题
    • -还是很好
    尝试通过

    构建过程:使构建成为一个单击过程。例如,增加版本号、启动maven构建、部署站点等的ant脚本。值得努力

    论坛:一个好主意,将有助于支持


    Wiki:在许多(甚至相当发达的)项目中,这样的Wiki都是空的,这是不好的(因为它让人们想到“如果没有人在这个Wiki中写作,这怎么可能是一个伟大的软件”)

    我知道已经提到了Maven,但我认为比使用Maven更重要的是将工件发布到Maven存储库,以便使用Maven的项目可以使用它们。 然后,您的项目页面还可以提供到repo的直接链接,以便it服务器作为可下载内容的存储空间

    同样,制作jars OSGi捆绑包——也就是说广告