Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Maven没有';运行mvn dependency:tree时无法识别同级模块_Java_Maven_Maven 2_Dependencies - Fatal编程技术网

Java Maven没有';运行mvn dependency:tree时无法识别同级模块

Java Maven没有';运行mvn dependency:tree时无法识别同级模块,java,maven,maven-2,dependencies,Java,Maven,Maven 2,Dependencies,我正在尝试设置一个多模块Maven项目,而模块间的依赖关系显然没有正确设置 我有: 平民 存储 在父POM中(具有包装类型POM) 然后是子目录commons/和storage/,它们定义了具有相同名称的JAR POM 存储依赖于公共空间 在主(主)目录中,我运行mvn dependency:tree并查看: [INFO]建筑系统 [信息]任务段:[依赖项:树] [信息]-------------------------------------------------------------

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

我有:


平民
存储
在父POM中(具有包装类型POM) 然后是子目录
commons/
storage/
,它们定义了具有相同名称的JAR POM

存储依赖于公共空间

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

[INFO]建筑系统
[信息]任务段:[依赖项:树]
[信息]------------------------------------------------------------------------
[信息][依赖项:树{执行:默认cli}]
[信息]域:系统:pom:1.0-快照
[INFO]\-junit:junit:jar:3.8.1:test
[信息]------------------------------------------------------------------------
[信息]公共建筑
[信息]任务段:[依赖项:树]
[信息]------------------------------------------------------------------------
[信息][依赖项:树{执行:默认cli}]
…正确的树。。。
[信息]------------------------------------------------------------------------
[信息]楼宇存储
[信息]任务段:[依赖项:树]
[信息]------------------------------------------------------------------------
下载:http://my.repo/artifactory/repo/domain/commons/1.0-SNAPSHOT/commons-1.0-SNAPSHOT.jar
[信息]在存储库my.repo中找不到资源“域:commons:jar:1.0-SNAPSHOT”(http://my.repo/artifactory/repo)
[信息]------------------------------------------------------------------------
[错误]生成错误
[信息]------------------------------------------------------------------------
[信息]无法解析工件。
缺失:
----------
1) 域:commons:jar:1.0-SNAPSHOT
为什么对“commons”的依赖失败了,尽管反应堆显然已经看到了它,因为它成功地处理了它的依赖树?它绝对不应该在网上找到它,因为它就在那里

用于存储的pom:


4.0.0
罐子
系统
领域
1.0-快照
领域
存储
存储
http://maven.apache.org
领域
平民
1.0-快照
朱尼特
朱尼特
3.8.1
测试
谢谢你的建议

(编辑)


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

我认为问题在于,当您指定依赖项时,Maven希望将其打包为jar(或其他任何形式),并至少从本地回购中获得。我确信,如果您首先在commons项目上运行
mvn install
,一切都会正常工作

如中所述,dependency:tree目标本身将在存储库而不是反应器中查找内容。您可以按照前面的建议,通过安装mvn来解决这个问题,或者执行一些调用reactor的不那么繁重的操作,例如

mvn compile dependency:tree

对我来说很有用。

意识到这是一个较旧的线程,但似乎要么是工具进化出来的,要么是第一次错过了

可以通过反应堆构建来执行一个构建,使依赖关系得到解决,而无需安装

如果在描述项目模块结构的父级中启动构建,那么模块之间的依赖关系将在构建过程中通过内部Maven reactor得到解决

当然,这不是一个完美的解决方案,因为它不能解决结构中单个模块的构建问题。在这种情况下,Maven的reactor中不会有依赖项,而是希望在存储库中解决它。因此,对于单个构建,您仍然必须首先安装依赖项


下面是一些关于这种情况的描述。

对于我来说,导致我出现这个线程的是一个类似的问题,解决方案是确保所有模块依赖性pom都有

 <packaging>pom</packaging>
pom
父母有

聚甲醛


我的dep型号有pom,所以找不到罐子。

唯一适合我的是:切换到gradle:(

我有

Parent
  +---dep1
  +---war1 (using dep1)
我可以在war1中使用cd,并使用mvn tomcat7:运行war。 我以前总是要安装整个项目,尽管war1引用了他的父项目,父项目引用了war1和dep1(作为模块),所以所有依赖项都应该是已知的


我不明白问题是什么。

确保在pom中解决了出现故障的模块,并通过在模块的pom文件中包含配置来指向正确的父级。

在Maven模块结构中,如下所示:

- parent
  - child1
  - child2
您将在
父项
pom
中包含以下内容:

<modules>
  <module>child1</module>
  <module>child2</module>
</modules>
您将收到一个错误,无法找到
child1
的JAR。这可以通过在
pom
中声明
child1
块来解决:

<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>example</groupId>
      <artifactId>child1</artifactId>
      <version>${project.version}</version>
    </dependency>
  </dependencies>
</dependencyManagement>

例子
孩子1
${project.version}
child1
现在将在您运行
compile
package
等时生成。在
parent
上的目标和
child2
将找到
child1
的编译文件。

使用from:

如果您的构建创建了测试jar,以便在反应堆子模块之间共享测试代码,您应该使用:

mvn test-compile dependency:tree

在这种情况下,这将允许
dependency:tree
运行到完成。

是否有办法指定我希望它使用源代码树中模块的任何版本?我认为这种情况将自动处理
mvn test-compile dependency:tree