如何使用另一个本地项目的本地maven快照[重复]
Posted
技术标签:
【中文标题】如何使用另一个本地项目的本地maven快照[重复]【英文标题】:How to use a local maven snapshot of another local project [duplicate] 【发布时间】:2018-01-27 06:22:20 【问题描述】:我觉得我在这里一定缺乏一些非常非常基本的 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 目录有一个设置文件将我的本地复制重定向到
/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
还有一些属性文件。
编辑2: 我不认为它是重复的。在发布我的问题之前,我查看了链接的问题。这里不涉及非maven项目或外部jar。
【问题讨论】:
您确认工件 jar 在您本地的.m2
文件夹中的正确位置吗?
你说你运行了安装,但是你的共享库的 pom 文件是否配置了你在依赖项中定义的信息?
我不认为这个问题与所述问题重复。这不是关于安装外部文件,而是关于构建一个库以便其他项目可以使用它。
@Strelok 根据您的 cmets 更新了问题。我的库的 pom 文件与版本和名称匹配。
【参考方案1】:
您的本地存储库通常位于用户存储库下方的.m2/repository
。如果你在你的库项目上做clean install
,它应该被安装到这个存储库中(在nl/whatever/com/my_shared_library/...
)。然后,您可以在同一台计算机上的所有其他 Maven 项目中使用它。
更重要的是<packaging>
是正确的,即包装需要与您要构建的工件相匹配。如果包装是pom
,那么您只需创建一个 pom(如父 pom 或 bom)。省略包装标签暗示你使用包装jar
。
【讨论】:
为什么要删除 .lastupdate 文件,这如何为我提供我显然需要的 jar? lastupdated 文件阻止您使用 jar,因为它们告诉 Maven 该 jar 不存在。这是没有得到应该存在的罐子的常见原因。您是否查看过本地存储库?它是否包含您使用“全新安装”构建的库? 全新安装会创建 1.0-SNAPSHOT 文件夹,其中包含以下文件:_remote.repositories
、maven-metadata-local
和 my_shared_library-1.0-SNAPSHOT.pom
。没有罐子。
您的 my_shared_library 是否有条目 您应该尝试使用名为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。
【讨论】:
会从成员投票中得到一些原因。或者您希望如何改进? 有时不是回答的人需要改进,而是选民。以上是关于如何使用另一个本地项目的本地maven快照[重复]的主要内容,如果未能解决你的问题,请参考以下文章