java - 我怎样才能使我的开发工作流程更 "enterprisey"?

标签 java workflow development-environment

我是总部位于东北部一所大学的学术联盟的唯一开发者。我所有的开发工作都涉及内部工具,主要是 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 集成。尽管它可能应该如此,但这不是我现在主要关心的问题,因为到目前为止我的应用程序还不是非常复杂。我真的很想现在就开始简化和精简我的工作流程,然后我会轻松进行单元测试。

很抱歉这个问题很长。我想我的问题归结为,对于一个单独的开发人员,我可以/应该使用哪些工具和方法不仅可以使我的工作更轻松,而且还可以让自己接触到一些技术,这些技术在专门的开发中需要具备必要的知识房子?


编辑:感谢您到目前为止的出色回答。我并不是说我想让我的工作流程“企业化”只是为了这样做,而是为了让我的工作更简单,并掌握一些通常用于企业开发环境的技术。这就是我的意思。

最佳答案

在我看来,您实际上很清楚自己需要做什么。

必须使用 Subversion(或其他 VCS)。尽管为您的工作相关代码设置一个单独的 SVN 存储库而不是使用个人的存储库可能是明智的。

您可以使用像 Subclipse 这样的插件将 Subversion 与 Eclipse 集成,我发现它工作得很好。

我肯定会使用 Ant 或 Maven - 我更喜欢 Ant,因为它更灵活,而且我认为它比 Maven 更适合您的开发风格。但您可能还想查看 Apache Ivy ,处理依赖管理。

基本上,您设置了一个运行编译、构建和部署步骤的 ant 任务 - 这样当您创建最终的 JAR 包时,您可以确保它已经过单元测试,因为这是您的 ant 脚本的一部分。开始使用 ant 的最佳方法是查看一些示例,并通读 manual .

至于单元测试 - 您可以逐渐建立单元测试。我建议将 JUnit 与代码覆盖工具结合使用,例如 Cobertura (这很容易设置)- 它将帮助您了解您的测试覆盖了多少代码,并且是测试有效性的指标。

设置 Trac 之类的东西时,您可能也值得一试 - 能够跟踪错误很重要,而且 wiki 对于文档非常有用。

换句话说,所有这一切听起来都像是在正确的路线上,您只需要开始使用其中的一些工具即可!

关于java - 我怎样才能使我的开发工作流程更 "enterprisey"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/413713/

相关文章:

java - 编码/取消编码基于 2 个不同模式的 2 个不同的类

java - 我到底应该把 ehcache.xml 放在我的项目中的什么地方?

java - Activiti中的异步流程执行

c# - 哪种 C# 设计模式适合在 ASP.NET 中编写自定义工作流程

google-app-engine - Google App Engine 开发服务器在 Windows 中运行缓慢,但在 Ubuntu Linux 中运行缓慢

XAMPP:您的连接不是私有(private)的 NET::ERR_CERT_AUTHORITY_INVALID

c++ - 用于 C++ 开发的 Xcode 5 插件

java - int.class 的用途和作用是什么

java - 数组内存泄漏

.net - 在生产中使用无工作流的WF规则引擎——实现经验