我试图使用systempath指定一个外部jar,并指定system的作用域
<dependency>
<groupId>org.whatever</groupId>
<artifactId>jar-name</artifactId>
<version>2.0.0-SNAPSHOT</version>
<scope>system</scope>
<systemPath>${pom.basedir}/libs/foo.jar</systemPath>
</dependency>
这允许项目进行构建,但我得到的运行时错误使我相信jar没有作为运行时依赖项包含。
文件说
假设这很像compile,但表示您希望jdk或容器在运行时提供依赖关系。例如,在为javaenterpriseedition构建web应用程序时,您可以将对servlet api和相关javaeeapi的依赖关系设置为提供的范围,因为web容器提供了这些类。具有此作用域的依赖项将添加到用于编译和测试的类路径,而不是运行时类路径。它是不可传递的。
系统这个作用域与提供的类似,只是您必须提供显式包含它的jar。工件总是可用的,不会在存储库中查找。
如何确保工件在运行时可用?它仍然在那里,在指定的相同位置(我在一个系统上完成所有这些)。使用intellij,如果有区别的话
我尝试通过指定一个项目存储库,通过
<repositories>
<repository>
<id>in-project</id>
<name>In Project Repo</name>
<url>file://${project.basedir}/libs</url>
</repository>
</repositories>
但在那种情况下,我甚至不能让项目建立。根本找不到依赖项。我曾经 mvn install:install-file
将jars安装到libs目录中,但仍然不起作用。
我还尝试简单地安装到我的本地回购也使用 mvn install:install-file
. 但我有编译错误。它根本找不到repos,尽管除了编译错误之外我没有得到任何错误。我确认jar在.m2回购中安装正确
2条答案
按热度按时间f8rj6qna1#
您正在使用
pom.basedir
而不是project.basedir
在systemPath
.这个
system
maven中不推荐使用scope。所以你应该考虑使用maven-install-plugin
插件并在本地安装所需的jar。安装插件将jar文件安装到本地存储库中~/.m2/repository
所以你可以在你的本地版本中使用它。你应该使用
install:install-file
目标是从命令行安装文件。sulc1iza2#
这个问题解决了。这是用户错误。我以为我加的那个jar只是个临时替代品。但是编译器错误是由于导入必须更改而导致的。我以为它没把jar捡好。感谢人们的帮助。你至少把我引向了正确的方向。