Maven:在项目版本控制中保持依赖的jar

Geo*_*old 12 java maven

所以,我有一个战争项目,其中包含几个在任何存储库中都没有的依赖jar.直到最近,我一直把它们保存在src/main/webapp/WEB-INF/lib,并将它们添加到具有系统范围的pom中.

我知道这有问题,所以我想清理我的构建.我.m2/repository通过install:install-file插件半手动安装了罐子.这对我很好,但我团队中的其他人呢?我们很小,设置Nexus并不是我们的选择.我已经使用添加注释来pom.xml解释如何install:install-file为每个jar 运行.

我对install:install-file解决方案很满意,但我仍然希望将这些工件包含在我的项目的版本控制中,而不仅仅是将它们放在我的文件系统中.

保持它们src/main/webapp/WEB-INF/lib不起作用,因为它会自动将它们添加到生成的war伪像中(离题:如果maven只是继续并将它们添加到类路径中,我将完成,不需要安装:install-file!)

问题:在maven目录布局中是否有一个受制裁的地方我可以收集这些.jar文件,这样我就可以将它们作为我项目的一部分了?

我确实意识到这里发生了什么 - Maven试图将依赖的jar 放在我的构建之外,这样当其他项目依赖于我的构建时,它们就可以解决传递依赖性.这对于进入公共maven repos的开源项目来说非常好,但是我敢打赌,绝大多数使用Maven的人正在研究像这样的"叶子"项目,并且有一种方法真的很方便包括jar文件作为项目的一部分,而不会跳过这么多的箍.

Col*_*inD 5

如果按照Jan的建议设置Nexus或只是一个简单的文件服务器仓库真的太麻烦了,这里有一些其他的选择:

  • 只需包含JAR和一个脚本,该脚本将它们全部安装在您选择的版本控制目录中.不需要Maven结构来制裁它.
  • 使用版本控制系统作为存储库的主机,无论是在本身在您的主项目的分支或作为一个单独的项目.让您已在版本控制上拥有的任何备份,安全性等应用于存储库,而不将jar包含在实际正在检出和提交的文件集中.
  • 将jar包含在一个文件夹中,该文件夹充当与其余代码签出的迷你存储库.让pom.xml指向该文件夹作为它使用的存储库.我不是100%确定这是可能的,但似乎很可能.

  • 我几乎想给你一个+1只是为了不回应"但是真的,设置Nexus并不难." :-)在一些(很多?)项目中设置像Nexus这样的工具根本不是一个选择.如果您没有团队/资源来维护外部存储库,就像您的源代码库一样谨慎,那么将工件保留在主源代码库之外并不是一个好主意.使用ant的人只是在lib目录中的东西罐子,他们已经完成了.我经常希望Maven会采用"简单的事情应该是简单的"口头禅.感谢您的答复. (2认同)