我觉得我必须缺少一些非常基本的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。
答案 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。