我是总部设在东北大学的学术联盟的唯一开发人员。我的所有开发工作都涉及内部工具,主要是Java,因此没有任何内容发布给公众。现在,我觉得我的开发工作流程非常“爱好”,并且与您在经验丰富的软件开发公司看到的完全不同。我倾向于说这并不重要,因为我是唯一一个开发人员,但是如果没有其他原因,只要让我的工作变得更容易并获得一些改变就不会有任何改变。我的简历中有更多技术。现在我的工作流程是这样的:
我在笔记本电脑上的Eclipse中完成了大部分的开发工作。一切都保存在我的笔记本电脑本地,我没有使用VCS,也没有真正备份我的代码(偶尔通过电子邮件发送给自己,所以我可以在另一台计算机上看到它 - 是的,我告诉过你我的开发环境需要工作)。
当我完成一个项目并想要部署它或者我只是想测试它时,我使用Eclipse中的内置Jar工具来生成我项目的可执行文件.jar。如果我使用外部.jar库,我使用Fat-Jar插件将这些.jars包含在我的可执行文件.jar中。
创建.jar后,我通过SFTP手动将其上传到服务器,并使用类似java -jar MyProject.jar
的内容进行测试。
我想首先解决的最明显的问题是我缺乏源代码控制。我喜欢git,因为它具有分布式特性,但它似乎没有很好地与Eclipse集成,我听说它在Windows上运行不佳,这是我的主要开发操作系统。所以,我倾向于SVN,我确实有一些经验。我确实拥有自己的个人服务器,我想我会将它用于我的源代码控制,因为我宁愿成为自己的管理员而不是处理大学官僚机构。我之前设置SVN时遇到了一些麻烦,但是我会再试一次。也许我还会安装类似Trac或Redmine的东西来进行错误跟踪,待办事项列表等等?
如何构建和部署?必须有比使用Fat-Jar更好的方法并手动将我的jar上传到服务器。我听说过像Ant和Maven这样的工具 - 这些适用于我想做的事情吗?我怎样才能开始使用它们?
我想我最终还想将单元测试与JUnit集成。虽然它可能应该是,但这不是我现在主要关注的问题,因为到目前为止我的应用程序并不是非常复杂。我现在非常想简化和简化我的工作流程,然后我会轻松进行单元测试。
很抱歉这个问题很长。我想我的问题归结为,对于一个唯一的开发人员,我可以/应该使用哪些工具和方法,不仅可以使我的工作更轻松,而且还可以让我自己接触一些在专门开发中需要的必备知识的技术房子?
编辑:感谢目前为止的精彩答案。我并不是说我想让我的工作流程“企业化”只是为了做到这一点,而是为了让我的工作变得更简单,并在我的腰带上获得通常用于企业开发环境的一些技术。这就是我的意思。
答案 0 :(得分:9)
在我看来,你实际上对你需要做的事情非常了解。
使用Subversion(或其他VCS)是必须的。虽然为您的工作相关代码设置单独的SVN存储库而不是使用个人代码可能是明智的。
你可以使用像Subclipse这样的插件将Subversion与Eclipse集成,我发现它非常适合。
我肯定会使用Ant或Maven - 我的偏好是Ant,因为它更灵活,我认为它也比Maven更适合你的开发风格。但您可能还需要查看处理依赖关系管理的Apache Ivy。
基本上你设置了一个运行编译,构建和部署步骤的ant任务 - 这样当你创建一个最终的JAR包时,你可以确定它已经过单元测试,因为它是你的ant脚本的一部分。开始使用ant的最佳方法是查看一些示例,并阅读manual。
对于单元测试 - 您可以逐步建立单元测试。我建议将JUnit与代码覆盖工具结合使用,例如Cobertura(这很容易设置) - 它将帮助您了解测试覆盖的代码量,并指示测试的有效性是
在设置像Trac这样的东西时也值得你这么做 - 能够跟踪错误很重要,而wiki对于文档来说非常有用。
换句话说,所有这些听起来都像是在正确的路线上,你只需要开始使用其中的一些工具!
答案 1 :(得分:2)
如果您确实设置了分布式源代码控制,我建议您查看Bazaar。它的GIT类似分布式源代码控制,旨在执行非常高质量的合并。开箱即用它适用于所有平台,包括Windows,他们有一个TortoiseBZR客户端。
但实际上,任何源代码控制都比没有好。如果您是唯一的开发人员,那么就不需要比SVN更复杂的东西了。大型公司和项目始终使用SVN,几乎没有问题。
就单元测试而言,你应该熟悉JUnit。您了解单元测试并知道您应该这样做的事实仍然比大多数临时开发人员领先几步。
答案 2 :(得分:2)
使用版本控制。期。 SVN与Eclipse和Windows的很好的集成。获取Windows的TourtisSVN客户端,并使用Eclipse的subclipse插件。
我建议您购买外置高清或使用贵公司的服务器来存放您的存储库并经常进行备份。 Subversion也适用于部署和升级。只是学习如何做,你永远不会回头:)
就单元测试而言,有些人会说这是要走的路,但我没有找到足够的证据来自己开始练习。如果这个问题上的sombody可以说服我,那么请做!
另外,不要期待“企业”你的工作流程 - 看起来更好。适用于大型团队和合作的实践可能不适合您。我自己几乎都是唯一的开发人员,并且知道你所处的情况。只要尝试一切,只需要保持一段时间后感觉自然。
但请务必尝试SVN!如果您的公司有一个带Apache的LINUX服务器,请查看您是否可以使用DAV-SVN在那里设置服务器。
:)
答案 3 :(得分:2)
我认为你回答了大部分问题。
答案 4 :(得分:1)
开始使用版本控制非常有用。从现在开始,不要拖延! Git正在快速移动,并且已经开发了TortoiseGit。 SVN仍然是一个很好的标准。我没有和Mercurial合作过,但这是另一个值得研究的VCS。
除此之外,我不明白为什么你的工作流程必须是企业的。它必须高效舒适。也就是说,我认为您应该尝试使用简单的文本编辑器并从命令行进行编译。大多数世界上最好的程序员仍然使用它而不是IDE,它将帮助您理解您喜欢的IDE下面的过程。
答案 5 :(得分:1)
查看实用程序员Pragmatic Starter Kit。
它让你了解大学/等的软件开发的重要基础知识。似乎放弃了,比如版本控制,单元测试和项目自动化(按顺序),并以非常平易近人的方式进行。
它将为你提供坚实的基础,让你继续前进。
答案 6 :(得分:0)
答案 7 :(得分:0)
一旦你有一个设置版本控制和一些单元测试,我会考虑一个连续的集成服务器(你想成为企业,对吧?)。
即使您是并且仍然是唯一的开发人员,这可能会帮助您发现一些错误。你忘记办理登机手续或喜欢的事情。 CI服务器定期检查所有源,干净的构建运行所有测试。如果出现错误,它也会与您联系。
这可以保证您(或任何其他人)能够检查您的代码并构建/运行您的项目。
我建议您查看Hudson
答案 8 :(得分:0)
虽然你把它作为最后一件事,但我认为你应该毫不拖延地开始使用jUnit。
原因是,它可能是您已经确定的野心的最简单,并且这些工具几乎肯定已经内置到您的Eclipse构建中。
在项目中创建一个名为“jUnit”的新文件夹。
假设您有一个Employee类,使用setAnnualSalary()和getMonthlySalary()方法。
右键单击jUunit文件夹,new - > “jUnit测试用例”。这将成为一个新的课程。称之为TestEmployee。 Eclipse像往常一样为你生成样板文件。
添加名称以'test'开头的void方法:
public void testSalaryCalc() {
Employee emp = new Employee("John Doe");
emp.setAnnualSalary(12000);
assertEquals(1000,emp.getMonthlySalary());
}
右键单击“运行方式” - > “jUnit测试”。 (Eclipse第一次可能会提示你为项目做一些设置。就像它说的那样。)
如果员工工作正常,您会看到一个绿色栏。 破坏Employee类,再次运行测试,你会看到一个红色条,以及输出告诉你失败是什么。
恭喜:您正在进行单元测试!
右键单击父目录并选择“Run as jUnit test”将运行目录中的每个Testcase类。稍后您可以将jUnit合并到构建过程中,但暂时不要担心。
自动填充功能会向您显示可以使用的assert()
的所有变体形式。您可以阅读它,并针对在您通过它们的实现之前编写测试用例的实践。但只要做上面这些简单的事情就可以获得很大的好处。
答案 9 :(得分:0)
正如其他人所说,你已经清楚地知道你需要做什么。 VCS是必须的,CI或错误跟踪可能是过度的(对于单个开发人员来说,电子表格可能足以进行错误跟踪)。
可能对您有益的一件事是保持有组织的产品积压。在单独开发中,我发现专注于高优先级功能并避免功能蔓延成为我最大的挑战之一。保持积压有助于极大地。它不一定只是一个优先级的功能列表,并且有一些关于每个功能范围的注释。在我的工作场所,我们将此信息保存在Trac中,但在这里,您可能只需要一个电子表格。
我想插入一个单元测试插件,特别是测试驱动开发(TDD)。 Kent Beck's book是一个很好的起点。我发现TDD有助于让我保持诚实,专注于我真正需要做的事情,特别是在没有QA的单一开发人员项目上。有时似乎代码会自行编写。
答案 10 :(得分:0)
你有一些非常可靠的答案如此简短的帖子添加了一篇关于测试驱动开发的文章的链接,这是一个敏捷的练习,在你的简历上会很好看。 TDD
答案 11 :(得分:0)
如果您正在运行要放置SVN服务器的Windows Server,请使用Visual SVN作为服务器。它易于设置和使用,它支持基本身份验证和Windows身份验证。它也是免费使用的。
Eclipse有很多模块可以与SVN服务器集成,因此请使用其中一个或已经建议的Tortoise SVN。
答案 12 :(得分:0)
之前的所有评论几乎涵盖了您可能需要的所有内容:-)
我想在如何开发(开发工作流程)上添加另一种方法。
我建议你阅读以下文章,虽然它是一个git工作流程,但你可以对你可能使用的任何其他工具使用相同的想法。