有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Maven可以将依赖关系拉入项目中吗?

我正在与Eclipse、Spring、Java和Tomcat一起使用Subversion进行一些小项目的版本控制。我想第一次尝试使用Maven,但我已经看到一件我不喜欢的事情,那就是如果我用Maven启动一个项目,它会将所有依赖项下载到我的.m2文件夹中,并将所有类路径下载到项目中,但我们希望将所有依赖项移动到WEB-INF/lib,这样我们就可以将它们签入Subversion

Maven能做到这一点吗?应该这样做吗


共 (3) 个答案

  1. # 1 楼答案

    了解Maven最重要的一点是,项目的依赖项不应签入版本控制(不取决于哪个版本控制)。Maven的想法是将依赖项只放在一个地方$HOME/。m2/存储库。这意味着对于您正在工作的每个项目,您的硬盘上只有一次依赖项。依赖关系管理使您可以轻松地从项目中添加/更改/删除依赖关系。此外,Maven不仅将处理依赖关系,它还将支持您进行单元/集成测试,创建报告,如代码覆盖等。如果你真的想与Maven合作,你应该设置一个存储库管理器,比如Nexus、Artifactory或Archiva

    最重要的一点是,如果你不喜欢Maven让你的手指远离Maven的工作方式,否则你将失去挑战。如果你喜欢与maven合作,你必须接受maven的方式

  2. # 2 楼答案

    将二进制软件包签入源代码管理并不理想,这与maven的要求背道而驰。一个值得关注的问题是当这些在线存储库崩溃时会发生什么,解决方案是使用类似Artifactory的东西来托管您自己的存储库。有些人不喜欢这样,他们必须在源代码管理的同时维护另一个系统,但是把maven带来的所有特性都放在桌面上是值得的

  3. # 3 楼答案

    您可以借助Maven下载依赖项(例如通过使用maven-dependeny-plugin),但您肯定不想这样做

    Why not Store JARs in CVS?(或任何其他版本控制系统):

    • 它使用更少的存储空间,而存储库通常相当大,因为每个JAR只保存在一个地方,这实际上是在节省空间,尽管看起来可能不是这样
    • 它使签出项目更快-初始签出,并且在较小程度上更新,如果CVS中没有大的二进制文件,项目将更快。尽管以后可能需要再次下载它们,但这种情况只发生一次,对于一些已经存在的常见jar来说可能不需要
    • 不需要版本控制-CVS和其他源代码管理系统是为版本控制文件而设计的,但是外部依赖项通常不会更改,或者如果它们更改了文件名以指示新版本,则外部依赖项通常不会更改。与将它们保存在本地工件缓存中相比,将它们存储在CVS中没有任何额外的好处