我有一个用Java做的副业。这是一个非常直截了当的网络应用。它在Linux Server上的Tomcat中运行,并使用MySQL数据库。大部分代码都是用Spring Framework编写的。它有很多适当的单元测试。当我在编写代码时,它是用Eclipse编写的。在部署应用程序时,我运行几个shell脚本将WAR文件移动到web服务器,执行数据库更新,并对apache配置进行更改。我是唯一一个开发它的开发人员,现在它只部署到一个环境(生产),尽管有一天我可能也想有一个测试或测试环境。我通过Eclipse插件使用SVN版本控制。
我总是听说人们在他们的项目中使用Maven。因为有这么多人在使用它,所以我对自己说,它一定很好。我想在业余时间学习它。唯一的问题是我不太明白为什么我要使用Maven?我的第一段听起来像是一个适合Maven的项目吗?对于一个与数据库交互的项目,它有什么特别的优势吗?
发布于 2008-09-19 22:15:37
您的项目听起来不像是适合Maven的项目。您似乎有一个可以工作的开发环境。为什么要再建一个呢?它只会给你多一个项目文件来维护,这就打破了良好的DRY原则。
发布于 2008-09-19 20:36:40
Maven非常适合您的IMO项目。Maven是一个全面的构建和部署管理工具。它最大的优点是,与功能相当的Ant文件或shell脚本相比,它使构建脚本更易于维护。
使用maven有很多优点,最大的优点是它更倾向于约定而不是配置。这意味着,如果您的项目使用Maven目录结构进行布局,那么构建和运行JUnit测试几乎不需要任何配置。
Maven为您带来的另一个重大胜利是依赖项管理。您可以在名为Project Object Model (POM)的Maven配置文件中声明性地定义项目的依赖关系,Maven负责将所有jars存储在它维护的本地目录结构中。对于公开可用的工件,jars会自动从Maven中央存储库下载,而对于内部或专有的第三方jars,您可以使用一个命令将它们安装到您的存储库中。
除了组织这些工件并自动设置构建类路径以包含所有必要的jars之外,maven还将管理依赖层次结构。这意味着如果您的项目依赖于jar A,而A依赖于jar B,那么jar B将自动与您的WAR捆绑在一起,即使您没有在构建配置中显式地将其列为依赖项。
此外,从专业开发的角度来看,学习Maven是有意义的,因为根据我的经验,Maven已经取代Ant成为开源和专有Java项目中的首选构建工具。
话虽如此,如果你有一个快速和可靠的构建系统,那么仅仅为了使用其他人使用的相同工具而转换到Maven可能不值得努力。
发布于 2008-09-19 20:57:40
Maven可以很好地完成您想做的事情。与大多数构建工具不同,maven明智地使用约定(好吧,至少比其他许多工具更好),并且它为您提到的每个领域都提供了“插件”:
单元测试:maven surefire plugin
Eclipse集成:m2eclipse
部署WAR文件:WAR plugin和Deploy plugin
Maven还可以帮助您在Tomcat上进行集成测试(如果您有的话),因为您可以使用cargo plugin启动、停止或部署war。
无论如何,如果你计划在业余时间阅读,这里有一本免费的书:Maven the definitive guide
希望它能帮上忙!
https://stackoverflow.com/questions/105307
复制相似问题