Maven:将自定义外部JAR链接到我的项目的最佳方式?

2022-08-31 06:50:42

这是我学习Maven的头几天,我仍然在为基础知识而苦苦挣扎。我有一个外部.jar文件(在公共存储库中不可用),我需要在我的项目中引用它,我试图找出我的最佳选择是什么。

这是一个没有库中央存储库的小规模项目,所以它必须是一个本地存储库(以某种方式添加到源代码管理中,不知道它是否应该以这种方式工作?)或者.jar需要存储在任何正式存储库之外的磁盘上。

1) 在我希望项目和库都位于源代码管理中的情况下,使用 maven 将.jar文件添加到项目引用的最佳选择是什么?

2)我似乎仍然不能让Eclipse看到依赖关系。我手动将其添加到pom的部分,它在m2eclipse的依赖项列表中显示得很好。mvn 编译和 mvn 包都成功,但运行程序会导致:

Exception in thread "main" java.lang.Error: Unresolved compilation problems:
        LibraryStuff cannot be resolved to a type

这是在将 POM 编辑为:

<dependency>
  <groupId>stuff</groupId>
  <artifactId>library</artifactId>
  <version>1.0</version>
  <systemPath>${lib.location}/MyLibrary.jar</systemPath>
  <scope>system</scope>
</dependency>

我应该执行mvn install:install-file甚至认为我已经有pom.xml如上所述编辑吗?

谢谢!


答案 1

您可以创建“项目内存储库”,这样您就不必每次在新计算机上工作时都这样做run mvn install:install-file

<repository>
    <id>in-project</id>
    <name>In Project Repo</name>
    <url>file://${project.basedir}/libs</url>
</repository>

<dependency>
    <groupId>dropbox</groupId>
    <artifactId>dropbox-sdk</artifactId>
    <version>1.3.1</version>
</dependency>

/groupId/artifactId/version/artifactId-verion.jar

详细阅读此博客文章

https://web.archive.org/web/20121026021311/charlie.cu.cc/2012/06/how-add-external-libraries-maven


答案 2

我认为你应该使用库jar填充你的本地存储库,然后你应该将范围从系统更改为编译。mvn install:install-file

如果你从maven开始,我建议直接使用maven而不是IDE插件,因为它增加了额外的复杂性。

至于错误,您是否将所需的jar放在类路径上?如果使用库中的类型,则还需要在运行时中访问它。这与maven本身无关。

我不明白为什么你要把库放在源代码管理中 - 它是用于源代码而不是二进制jar。


推荐