如何使用另一个本地项目的本地maven快照

时间:2017-08-18 14:12:00

标签: java maven intellij-idea

我觉得我必须缺少一些非常基本的Maven知识。我有一对(几个)maven项目和一个共享库。该库应该是一个独立的maven项目,具有自己的生命周期。我尝试使用以下方法将库导入我的项目:

<dependencyManagement>
   <dependencies>
      <dependency>
         <groupId>nl.whatever.com</groupid>
         <artifactId>my_shared_library</artifactId>
         <version>1.0-SNAPSHOT</groupid>
      </dependency>

      ...
   </dependencies>
</dependencyManagement>

但是maven一直在寻找我的副本而不是试图找到我的本地版本。最糟糕的是,它一直在寻找一个罐子。我明白了:

Could not resolve dependencies for project my.project:ejb:1.0-SNAPSHOT: Could not find artifact nl.whatever.com:my_shared_library:jar:1.0-SNAPSHOT

我的菜鸟错误是什么?是的,我确实干净地安装了我的图书馆项目。

编辑:

我的.m2目录有一个设置文件,将我的本地repro重定向到

/ws/repro, which contains:
/ws/repro/nl/whatever/com/my_shared_library/1.0-SNAPSHOT/
   my_shared_project-1.0-SNAPSHOT.jar.lastUpdate
   my_shared_project-1.0-SNAPSHOT.pom

和一些属性文件。

EDIT2: 我不认为它是重复的。在发布我的问题之前,我查看了链接的问题。这里没有涉及非maven项目或外部jar。

2 个答案:

答案 0 :(得分:0)

您的本地存储库通常位于用户存储库下方的.m2/repository中。如果您对库项目执行clean install,则应将其安装到此存储库中(在nl/whatever/com/my_shared_library/...中)。然后,您可以在同一台计算机上的所有其他Maven项目中使用它。

<packaging>更正确,即包装需要与您要构建的工件相匹配,这一点非常重要。如果包装是pom,那么您只创建一个pom(如父pom或bom)。遗漏包装标签意味着您使用包装jar

答案 1 :(得分:0)

您应尝试使用名为repositories的标记更新pom.xml。

Maven repositories是包含不同类型的构建工件和依赖项的地方。

示例maven远程存储库标记及其值为:

<repositories>
  <repository>
    <id>central</id>
    <name>Maven Repository</name>
    <url>http://repo1.maven.org/maven2</url>
  </repository>
</repositories>

要配置多个存储库,您可以关注guide并在settings.xml中使用配置文件。

在旁注中,除非遵循层次结构或使用库的特定版本。您应该使用<dependencies>代替<dependencyManagement>,请查看differences between dependencymanagement and dependencies in maven