Maven可以将依赖项纳入项目吗?

时间:2012-03-30 15:55:46

标签: java eclipse spring maven-3

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

可以用Maven完成吗?应该这样做吗?

3 个答案:

答案 0 :(得分:3)

将二进制包检入源控件并不是很理想,而且与maven相反。一个有效的问题是当这些在线存储库发生故障并且解决方案是使用诸如Artifactory之类的东西来托管您自己的存储库时会发生什么。有些人不喜欢他们必须在源代码控制的同时维护另一个系统,但是值得拥有maven带来的所有功能。

答案 1 :(得分:2)

您可以借助Maven下载依赖项(例如使用maven-dependeny-plugin),但大多数情况下您不希望这样做。

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

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

答案 2 :(得分:2)

了解Maven最重要的事情是项目的依赖关系不应该签入版本控制(不依赖于哪个版本控制)。 Maven的想法是只将依赖项放在$ HOME / .m2 / repository的单个位置。这意味着对于您正在工作的每个项目,您在硬盘驱动器上只有一次依赖项。依赖关系管理使您可以轻松地从项目中添加/更改/删除依赖项。此外,Maven 不仅将处理依赖性,它将支持您进行单元/集成测试,创建报告,例如代码覆盖率< / strong>等等。如果你真的想与Maven合作,你应该建立一个像Nexus,Artifactory或Archiva这样的Repository Manager。

最重要的一点是,如果你不喜欢Maven的工作方式让你的手指离开Maven,否则你将无法摆脱挑战。如果您想与maven合作,您必须接受 Maven Way