类路径中不包含本地jar(`< scope> system< / scope>`)
|
我正在尝试使用maven和eclipse构建我的应用程序。
我依赖于我本地机器上的第三方罐子。
这是我的pom.xml
<dependency>
<groupId>sourceforge.net</groupId>
<artifactId>zipdiff</artifactId>
<version>0.4</version>
<scope>system</scope>
<systemPath>C:/gelcap/lib/zipdiff-0.4.jar</systemPath>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.11</version>
</dependency>
当我运行mvn:install时会为我的项目创建war文件。
但问题是它不包括zipdiff.jar文件到web-inf / lib文件夹,它只包含下载的文件。我需要包括从我的本地系统复制文件,但maven忽略它们。
我没有想到为什么maven没有包含系统范围的文件到我的war文件。
请告诉我如何解决这个问题。
提前致谢
没有找到相关结果
已邀请:
5 个回复
伞腹
梆晨灸碾
范围的依赖关系应该按照文档提供。 实际上,我已经多次写过(这里,这里,这里和这里)应该避免使用
范围的依赖。他们大部分时间都是一种不好的做法,人们滥用它们,而且它们几乎总是带来麻烦而不是好处。 如果您想要“官方”的观点,让我引用依赖范围迷你指南:
:在项目生命周期的某个阶段需要这种依赖关系,但这是系统特定的。不鼓励使用此范围:这被认为是一种“高级”功能,只有在您真正理解其使用的所有后果时才能使用,如果实际上无法量化则可能非常困难。根据定义,此范围使您的构建不可移植。在某些边缘情况下可能是必要的。系统范围包括
元素,该元素指向此依赖关系在本地计算机上的物理位置。因此,它用于指代预期存在于给定本地机器上而不是存储库中的某个工件;并且其路径可能因机器而异。 systemPath元素可以在其路径中引用环境变量:例如,
。 因此,不是使用
范围,而是: 通过
将库添加到本地存储库。这是一种快速而肮脏的方式来使事情正常工作,如果你是一个人,它可能是一个选项,但它使你的构建不可移植。 安装并运行像Nexus,Archiva或Artifactory这样的“企业存储库”,并通过
添加您的库。这是理想的情况。 按照上一个答案中的描述设置基于文件的存储库,并将库放在那里。如果您没有公司存储库但需要团队合作并且不想牺牲可移植性,那么这是最好的折衷方案。 请停止使用
范围。
旦彤
诞胃
俯乡骚钵皆