我有 2 个 maven 模块,它们都是快照构建,因为它们正在积极开发中。为了便于讨论,这两个模块是通用的,& web. 网络依赖于共同点。我正在使用项目聚合来定义各个模块。如果我执行一个目标,让我们说在包含模块 common 和 web 的父 pom.xml 上的 mvn test 两个模块上的测试目标都按预期运行。如果我仅在 web 模块上运行测试,则无法找到 common 的依赖项。换句话说,它无法找到常见的快照 jar。由于它是一个快照,因此它不会被部署到存储库中,所以这是有道理的。我的问题是,当我运行父 pom(项目聚合)时,它如何找到该依赖项?该公共模块工件在哪里部署,以便 Web 模块可以访问它并解决其依赖关系。
问问题
80 次
2 回答
0
如果您希望能够在任何地方运行它,您可以将快照库部署到本地存储库中:在您的情况下,使用以下命令将 common 部署到 web 中:
mvn deploy:deploy-file -Durl=file:///your/web-project/root/dir -Dfile=your-common.jar -DgroupId= -DartifactId= -Dpackaging=jar -Dversion=xx-SNAPSHOT
这将生成一个本地 repo 目录结构,其中包含您的 jar。然后修改你的 web 的 pom.xml:
<repositories>
<repository>
<id>project.local</id>
<name>project</name>
<url>file:${project.basedir}/repo</url>
</repository>
</repositories>
于 2013-04-26T15:04:51.787 回答
0
正如 Franz Ebner 在他的评论中建议的那样,首先运行:
# for the core pom:
mvn install
它将核心工件放入您的本地机器 maven 2 存储库中,当您构建/测试/任何 Web 工件时可以从中获取它。
于 2014-05-24T07:41:06.593 回答