0

我有 2 个 maven 模块,它们都是快照构建,因为它们正在积极开发中。为了便于讨论,这两个模块是通用的,& web. 网络依赖于共同点。我正在使用项目聚合来定义各个模块。如果我执行一个目标,让我们说在包含模块 common 和 web 的父 pom.xml 上的 mvn test 两个模块上的测试目标都按预期运行。如果我仅在 web 模块上运行测试,则无法找到 common 的依赖项。换句话说,它无法找到常见的快照 jar。由于它是一个快照,因此它不会被部署到存储库中,所以这是有道理的。我的问题是,当我运行父 pom(项目聚合)时,它如何找到该依赖项?该公共模块工件在哪里部署,以便 Web 模块可以访问它并解决其依赖关系。

4

2 回答 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 回答