带有模块的项目中的 Maven 依赖解析
我的 Maven 项目的结构如下:
project
moduleA
moduleB
moduleC
moduleB 和 moduleC 依赖于 moduleA。如果我执行“mvn install”命令,maven 在我的本地存储库中安装 moduleA 和 moduleB,然后 maven 尝试安装 modeleC 但没有成功,首先它会尝试在所有已知的 maven 远程存储库中查找工件 moduleA,然后,我'我收到一条消息,指出 moduleA 工件丢失。它是如此磨损,因为有时它工作正常,有时则不行。因为这个问题我浪费了很多时间。
工件 moduleA 和 moduleB 位于我的本地存储库中。
我在 Windows 7 pro 下的 64 位机器上使用 maven 2.2.1。
有谁知道问题是什么?
谢谢,
凯文
my maven project is stuctured as:
project
moduleA
moduleB
moduleC
The moduleB and moduleC are dependend on moduleA. if I execute the 'mvn install' command maven installs moduleA and moduleB in my local repository after that maven tries to install the modeleC but without success, first it tries to find the artifact moduleA in all known maven remote repositories and after that, I'm getting a message that the moduleA artefact is missing. Its so weard because sometimes it works fine and sometimes not. Because of this issue I wasted a lot of time.
The artifact moduleA and moduleB are in my local repository.
I'm using maven 2.2.1 on a 64Bit machine under windows 7 pro.
Does anyone know what the problem is?
Thanks,
Kevin
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果您使用 mvn install,该命令会将工件放入您的本地存储库中。通常位于您的主目录中的 .m2/repository 下,除非您另有指定。如果 moduleC 正在尝试构建(使用 mvn install)并且依赖于 moduleA,则 moduleA 应该在 moduleC 时从本地存储库中提取。如果 moduleC 正在远程查找 moduleA,则 moduleA 永远不会安装到本地存储库中。
检查 moduleC 的 pom 文件。确保 moduleC 的 pom.xml 中 moduleA 的依赖信息与 moduleA 的 pom.xml 中指定的 groupId、artifactId 和版本相匹配。如果匹配,请确保 moduleA 确实正在生成工件。它应该位于 moduleA 下的目标目录中。如果 moduleA 不是 jar,请确保 moduleA 的 pom.xml 中列出了 type 属性,并且 moduleC 的 pom.xml 中列出了依赖项的类型。
如果上述方法不能得到一致的解决方案,您可能需要编辑问题并添加一些 pom.xml 详细信息。
If you use mvn install, that command will put the artifact in your local repository. Usually in your home directory under .m2/repository unless you have specified differently. If moduleC is trying build (with mvn install) and depends on moduleA, moduleA should be pulling from your local repository when moduleC. If moduleC is looking remotely for moduleA then moduleA never got installed into your local repository.
Check the pom file for moduleC. Make sure the dependency information in moduleC's pom.xml for moduleA matches the groupId, artifactId, and version specified in moduleA's pom.xml. If that matches, make sure moduleA is really producing an artifact. It should be in the target directory under moduleA. If moduleA is not a jar make sure you have the type attribute listed in the pom.xml for moduleA and that moduleC's pom.xml has that type listed for the dependency.
If the above doesn't lead to a consistent resolution, you're may want to edit your question adding some of the pom.xml details.