我是总部设在东北大学的学术联盟的唯一开发人员.我的所有开发工作都涉及内部工具,主要是Java,因此没有任何内容发布给公众.现在,我觉得我的开发工作流程非常"爱好",并且与您在经验丰富的软件开发公司看到的完全不同.我倾向于说这并不重要,因为我是唯一一个开发人员,但是如果没有其他原因那么做一些改变就不会有什么害处,而不是让我的工作变得更容易一些我的简历中有更多技术.现在我的工作流程是这样的:
我在笔记本电脑上的Eclipse中进行了大部分开发工作.一切都在我的笔记本电脑上本地保存,我没有使用VCS,也没有真正备份我的代码(偶尔通过电子邮件发送给自己,所以我可以在另一台计算机上看到它 - 是的,我告诉过你我的开发环境需要工作).
当我完成一个项目并希望部署它或者我只是想测试它时,我使用Eclipse中的内置Jar工具来创建我的项目的可执行文件.jar.如果我使用外部.jar库,我使用Fat-Jar插件将这些.jars包含在我的可执行文件.jar中.
创建.jar之后,我通过SFTP手动将其上传到服务器并使用类似的方法对其进行测试java -jar MyProject.jar
.
哦是的,我提到过我不进行单元测试吗?
我想首先解决的最明显的问题是我缺乏源代码控制.我喜欢git,因为它具有分布式特性,但它似乎没有很好地与Eclipse集成,我听说它在Windows上运行不佳,这是我的主要开发操作系统.所以,我倾向于SVN,我确实有一些经验.我确实拥有自己的个人服务器,我想我会将它用于我的源代码控制,因为我宁愿成为自己的管理员而不是处理大学官僚机构.我之前设置SVN时遇到了一些麻烦,但是我会再试一次.也许我还会安装像Trac或Redmine这样的bug跟踪,待办事项列表等等?
那么构建和部署呢?必须有比使用Fat-Jar更好的方法并手动将我的jar上传到服务器.我听说过像Ant和Maven这样的工具 - 这些适用于我想做的事吗?我怎样才能开始使用它们?
我想我最终也希望将单元测试与JUnit集成.虽然它可能应该是,但这不是我现在主要关注的问题,因为到目前为止我的应用程序并不是非常复杂.我现在非常想简化和简化我的工作流程,然后我会轻松进行单元测试.
很抱歉这个问题很长.我想我的问题归结为,对于一个唯一的开发人员,我可以/应该使用哪些工具和方法,不仅可以使我的工作更轻松,而且还可以让我自己接触一些在专门开发中需要的必备知识的技术屋?
编辑:感谢目前为止的精彩答案.我并不是说我想让我的工作流程"企业化"只是为了做到这一点,而是为了让我的工作变得更简单,并在我的腰带上获得通常用于企业开发环境的一些技术.这就是我的意思.
在我看来,你实际上对你需要做的事情非常了解.
使用Subversion(或其他VCS)是必须的.虽然为您的工作相关代码设置单独的SVN存储库而不是使用个人代码可能是明智之举.
您可以使用像Subclipse这样的插件将Subversion与Eclipse集成,我发现它非常适合.
我肯定会使用Ant或Maven - 我的偏好是Ant,因为它更灵活,我认为它也比Maven更适合你的开发风格.但您可能还需要研究处理依赖关系管理的Apache Ivy.
基本上你设置了一个运行编译,构建和部署步骤的ant任务 - 这样当你创建一个最终的JAR包时,你可以确定它已经过单元测试,因为它是你的ant脚本的一部分.开始使用ant的最佳方法是查看一些示例,并阅读手册.
至于单元测试 - 您可以逐步建立单元测试.我建议将JUnit与代码覆盖工具(如Cobertura(易于设置))结合使用 - 它将帮助您了解测试所覆盖的代码量,并指示测试的有效性.
在设置像Trac这样的东西时也值得你这么做 - 能够跟踪bug是很重要的,而wiki对于文档来说非常有用.
换句话说,所有这些听起来就像你在正确的线上,你只需要开始使用这些工具!