【问题标题】:Maven: Including external JAR in POMMaven:在 POM 中包含外部 JAR
【发布时间】:2012-09-28 18:39:51
【问题描述】:

我知道以前有人问过并回答过这样的问题,并且花时间阅读了这些主题,但不知何故它们对我没有帮助。我在DSpace 软件中本地添加了自己的Java 代码,并且我的代码依赖于另一个库,所以我必须将此库(JAR)包含到POM 的<dependencies> 部分,对吧?这是我的条目的样子:

<dependency>
        <groupId>de.mannheim.ids</groupId>
        <artifactId>pid</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <systemPath>/absolute/path/to/jar/pid-client-0.0.1-SNAPSHOT.jar</systemPath>
        <scope>system</scope>
</dependency>

这无济于事,但会导致编译错误 - 找不到相关的类。我也试过mvn install:install-file -Dfile...,它告诉我jar 一切都很好(构建成功),但随后的mvn package 失败并出现通常的错误。

我做错了什么?

【问题讨论】:

  • 嗯...这里之前的评论刚刚消失,建议使用compile 范围而不是system。这是否意味着另一个库必须在存储库中?抱歉,如果我对此不清楚,我只有该 JAR 的本地副本。此外,systemPath 元素仅允许使用 system 范围。

标签: maven jar dependencies pom.xml dspace


【解决方案1】:

在使用mvn install:install之后应该可以像往常一样使用神器了。

如果该命令返回构建成功,您应该可以在您的 pom 中使用它:

<dependency>
        <groupId>de.mannheim.ids</groupId>
        <artifactId>pid</artifactId>
        <version>0.0.1-SNAPSHOT</version>
</dependency>

Maven 会像在本地存储库中找到任何 jar 一样找到它。

【讨论】:

  • 感谢 Olivier,mvn install:install(没有文件规范等)给了我一个我不明白的错误 - 你能帮忙吗? [INFO] [install:install {execution: default-cli}] [INFO] -------------------------------- ------------------------- [错误] 构建错误 [信息] ----------------- ---------------------------------------------------- [INFO] 这个项目的包装没有将文件分配给构建工件`
  • 您能复制/粘贴您输入的确切命令吗?请参阅此处的使用文档:maven.apache.org/plugins/maven-install-plugin/usage.html。并非所有参数都是强制性的,但您至少需要指定以下 mvn -X install:install-file -Dfile=path/to/mly/jar -DgroupId=j&lt;groupname&gt; -DartifactId=&lt;artifactname&gt; -Dversion=&lt;version&gt; -Dpackaging=jar。当然你需要在你的 pom 中指定相同的 artifactId、groupId 和 version。
  • 这是我的确切命令:mvn install:install-file -Dfile=/home/joachim/workspace/DSpace3/pid-client-0.0.1-SNAPSHOT.jar -DgroupId=de.mannheim.ids -DartifactId=pid -Dversion=0.0.1-SNAPSHOT -Dpackaging=jar 此命令返回 BUILD SUCCESSFUL,POM 条目看起来就像您在答案中发布的一样。
  • 等待 - 我要添加的 JAR 依赖于其他库。我是否也必须将它们添加到存储库/POM 中?除此之外,我已经验证了我需要的 JAR 实际上在本地 repo 中,所以这里的一切看起来都很好。
  • 手动添加 Jar 时,您可以上传列出其依赖项的 pom.xml(带有 -DpomFile)文件,也可以直接使用它。在后一种情况下,将不会检索传递依赖关系,因为 Maven 将没有关于它的信息。我不建议这样做,上传 pom 文件是可行的方法,但如果您需要这样做,则必须明确列出依赖项。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多