运行mvn依赖项时,Maven无法识别兄弟模块:树 [英] Maven doesn't recognize sibling modules when running mvn dependency:tree

查看:106
本文介绍了运行mvn依赖项时,Maven无法识别兄弟模块:树的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试设置一个多模块Maven项目,并且模块间依赖关系显然没有正确设置。

I'm trying to set up a multi-module Maven project, and the inter-module dependencies are apparently not being set up correctly.

我有:

<modules>
  <module>commons</module>
  <module>storage</module>
</modules>

在父POM(包装类型pom)
然后子目录 commons / storage / ,用于定义具有相同名称的JAR poms。

in the parent POM (which has a packaging-type pom) and then subdirectories commons/ and storage/ which define JAR poms with the same name.

存储取决于Commons。

Storage depends on Commons.

在主(主)目录中,我运行 mvn依赖:tree 并查看:

In the main (master) directory, I run mvn dependency:tree and see:

[INFO] Building system
[INFO]    task-segment: [dependency:tree]
[INFO] ------------------------------------------------------------------------
[INFO] [dependency:tree {execution: default-cli}]
[INFO] domain:system:pom:1.0-SNAPSHOT
[INFO] \- junit:junit:jar:3.8.1:test
[INFO] ------------------------------------------------------------------------
[INFO] Building commons
[INFO]    task-segment: [dependency:tree]
[INFO] ------------------------------------------------------------------------
[INFO] [dependency:tree {execution: default-cli}]
...correct tree...
[INFO] ------------------------------------------------------------------------
[INFO] Building storage
[INFO]    task-segment: [dependency:tree]
[INFO] ------------------------------------------------------------------------
Downloading: http://my.repo/artifactory/repo/domain/commons/1.0-SNAPSHOT/commons-1.0-SNAPSHOT.jar
[INFO] Unable to find resource 'domain:commons:jar:1.0-SNAPSHOT' in repository my.repo (http://my.repo/artifactory/repo)
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Failed to resolve artifact.

Missing:
----------
1) domain:commons:jar:1.0-SNAPSHOT

为什么对公共的依赖性失败,即使反应堆显然已经看到它,因为它成功处理了它的依赖树?绝对不应该去'网找到它,因为它就在那里......

Why does the dependency on "commons" fail, even though the reactor has obviously seen it because it successfully processes its dependency tree? It should definitely not be going to the 'net to find it as it's right there...

存储的pom:

<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <modelVersion>4.0.0</modelVersion>
  <packaging>jar</packaging>
  <parent>
    <artifactId>system</artifactId>
    <groupId>domain</groupId>
    <version>1.0-SNAPSHOT</version>
  </parent>
  <groupId>domain</groupId>
  <artifactId>storage</artifactId>
  <name>storage</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <!-- module dependencies -->
    <dependency>
      <groupId>domain</groupId>
      <artifactId>commons</artifactId>
      <version>1.0-SNAPSHOT</version>
    </dependency>

    <!-- other dependencies -->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>

感谢您的任何建议!

(编辑)

为了澄清,我在这里寻找的是:我不想安装模块X来构建依赖于X的模块Y,给定这两个都是从同一父POM引用的模块。这对我来说很直观,如果我在同一个源代码树中有两件事,我就不必安装中间产品来继续构建。希望我的想法在这里有所帮助......

To clarify, what I am looking for here is this: I don't want to have to install module X to build module Y which depends on X, given that both are modules referenced from the same parent POM. This makes intuitive sense to me that if I have two things in the same source tree, I shouldn't have to install intermediate products to continue the build. Hopefully my thinking makes some sense here...

推荐答案

我认为问题是当你指定一个依赖Maven期望有它作为jar(或其他)包装并至少从本地回购中获得。我敢肯定,如果你在公共项目上运行 mvn install ,首先一切都会有效。

I think the problem is that when you specify a dependency Maven expects to have it as jar (or whatever) packaged and available from at least a local repo. I'm sure that if you run mvn install on your commons project first everything will work.

这篇关于运行mvn依赖项时,Maven无法识别兄弟模块:树的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆