【问题标题】:How to provide artifacts to a maven project if those are not in public repository?如果那些不在公共存储库中,如何向 Maven 项目提供工件?
【发布时间】:2013-03-28 18:39:50
【问题描述】:

我从 Github 克隆了一个开源库项目,我想将其用于我自己的 Java 项目。该库依赖于其他一些在任何公共存储库中都找不到的 jar。这会导致mvn package 失败:

[ERROR] Failed to execute goal on project commons-gdx-core: 
Could not resolve dependencies for project 
com.gemserk.commons.gdx:commons-gdx-core:jar:0.0.11-SNAPSHOT: 
The following artifacts could not be resolved: 
com.badlogic.gdx:gdx:jar:0.9.8-SNAPSHOT, 
com.gemserk.animation4j:animation4j-core:jar:0.2.2-SNAPSHOT,
com.gemserk.vecmath:vecmath:jar:1.5.3-GEMSERK: 
Could not find artifact com.badlogic.gdx:gdx:jar:0.9.8-SNAPSHOT -> [Help 1]

我想我可以从其他来源获得这些罐子,但我不知道如何告诉 maven 在哪里寻找它们。

【问题讨论】:

  • 如果它们在任何公共 maven 存储库中不可用,那么您必须在某个地方找到它们并安装到本地 maven 存储库。如果您计划分发您的项目,您需要将它们提供给其他人(例如,通过将它们上传到某处)。

标签: java maven jar


【解决方案1】:

例如,我们有 Oracle JDBC 驱动程序。您必须将其安装到本地 maven 存储库中。

  1. 将您的 lib 下载到本地文件夹(即:Path/to/private/library.jar)
  2. mvn install:install-file -Dfile= -DgroupId= -DartifactId= -Dversion= -Dpackaging=jar

或者,一种更高级的方式,如果您有一个 Maven 存储库(如 Sonatype Nexus),您可以将它部署在存储库上并将其映射到您的项目中。但是,我认为您需要第一个选项。

【讨论】:

    【解决方案2】:

    使用存储库和存储库标签指向您的 pom 文件中的私有存储库或以相同的方式更新您的 settings.xml。一旦你告诉它去哪里看,Maven 就会下载工件。

    【讨论】:

    【解决方案3】:

    apast 和 Chris 的回答都是正确的。但是如果你改变你的计算机或清理你的本地存储库,你的项目仍然无法编译。我建议使用系统依赖项并在 git 版本控制下添加 jar。 Here's 一个例子。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-06-10
      • 1970-01-01
      • 2014-08-31
      • 2012-09-13
      • 2020-02-21
      • 2022-11-03
      • 1970-01-01
      相关资源
      最近更新 更多