除非您的Java EE服务器/容器配置了该jar,否则不能使用systemPath。
请记住,maven只是开发和编译时间。一旦构建了war文件,除了将所有需要的jar文件放入WEB-INF/lib文件夹之外,maven没有任何作用。
当您指定系统范围时,这意味着您有责任在部署战争时确保该jar存在。你已经有了一个框架来做到这一点,你不希望用这个jar来阻碍你的构建依赖,但是你只能在开发过程中使它可用于Maven。
其他类似的范围是“提供”。例如JBoss或您的企业常见部署Tomcat框架已经提供了很多像Spring和Hibernate这样的jar,它们是由服务器启动加载的,并且是服务器中所有应用程序共有的。因此,你不希望Maven构建将其包含到war文件中。
正确的方式,Maven大师会告诉你。就是拥有你自己的Maven服务器,并在你的服务器上构建你需要的任何工件。然而,偶尔这是不可能的。
因此,在这种情况下,我创建了与项目一起分发并签入版本控制的项目级存储库。我运行命令mvn install
来创建一个名为“project-repo”的项目级目录。
http://maven.apache.org/plugins/maven-install-plugin/examples/specific-local-repo.html(由于熟悉,大多数时候,我手动构建回购站而不是运行mvn install)。
然后在POM中,我指定file:// $ {project.basedir}/project-repo作为其中一个存储库。需要注意的是,在Windows中,“file://”之后的斜杠不是在引用Windows文件系统路径时必须反斜杠。
<repositories>
<repository>
<id>my-repo1</id>
<name>my custom repo</name>
<url>http://ho.ho.ho</url>
</repository>
<repository>
<id>project-repo</id>
<name>my project repo</name>
<url>file://${project.basedir}\project-repo</url>
</repository>
</repositories>
请详细 –
看从@BlessedGeek的答案,也对这个相关的SO问题的博客:http://stackoverflow.com/questions/2229757/maven-add-a-dependency-to-jar -by-relative-path/2230464#2230464 – maba
请参阅https://stackoverflow.com/a/45120371/1709793 – craftsmannadeem