我有一个maven项目,我想与其他几个项目分享。它有一些自定义代码,然后是一些依赖于log4j,jasypt等的东西。
我构建它并将其安装到我当地的maven repo。我可以看到它成功地放在那里。查看.m2 / repository / derp / Foo / 1.0,它有一个.pom及其所有依赖项。
我也可以将它定义为我的更高级别项目中的依赖项,并进行编译。
<dependency>
<groupId>my.group</groupId>
<artifactId>Foo</artifactId>
<version>1.0</version>
</dependency>
我可以在eclipse中看到我的'Maven Dependencies'中的Jar,并扩展该jar我可以看到它在META-INF / maven / derp / Foo / pom.xml中具有正确的pom和依赖关系。
但是我在Foo之上的顶级项目没有得到Foo需要的依赖项。我得到运行时异常,我可以看到在eclipse中我的maven依赖项中没有传递依赖jar。
我需要做些什么才能确保Maven知道在我的本地仓库中查看Pom for Foo,这样它将获得所需的所有传递依赖项?
-----编辑-----
回答下面的评论,它们是这样定义的,依赖项标签位于项目标签下的顶层。
<dependencies>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.2</version>
</dependency>
等等......
当我正在构建和运行这个Foo项目时,这些是maven正确找到的罐子,但是如果项目依赖于Foo(Bar),maven不包括这些罐子,我发现当我尝试运行时杆
答案 0 :(得分:1)
“Foo上面的顶级项目没有获得依赖关系”是什么意思?
构建反应器中“{1}”以上的任何内容都应直接依赖Foo
,如您所述。指定的Foo
将resolve to <dependency/>
的依赖关系(在Foo
指定的范围内)。
如果不了解您项目的具体细节,我们可能无法为您提供进一步的帮助。
一些可能的常见情况:
Foo
执行阶段访问test
范围内的依赖关系。事实并非如此。test
运行时自动加载这些依赖项。那也不是真的。 java
目标,并在exec:java
内指定所需的解决范围,也可能指定<configuration/>
。<execution/>
代表<dependencyManagement>
。这种情况比我预期的要多。