java - 嵌套的maven多模块spring boot项目
问题描述
所以我想构建一个具有以下结构的项目:
Project[pom.xml]
-----module 1[pom.xml]
-----sub-module 1[pom.xml]
-----sub-module 2[pom.xml]
-----sub-module 3[pom.xml]
-----module 2[pom.xml]
-----module 3[pom.xml]
现在,模块 1 和模块 2 是模块 3 的依赖项。
问题1:这种方法是错误的吗?
问题2:当我实现这个时,项目的包装结构为父pom和模块1的pom,而模块1、模块2和模块3的子模块的包装结构jar。现在当我运行mvn clean install时,我得到了这个错误:
org.apache.maven.lifecycle.LifecycleExecutionException:无法在项目 foo-module3 上执行目标:无法解析项目 com.org:foo-module3:jar:0.0.1-SNAPSHOT 的依赖项:找不到 com.org:foo -module1:jar:0.0.1-SNAPSHOT in ***/libs-snapshot 被缓存在本地仓库中,直到central2的更新间隔过去或强制更新后才会重新尝试解析 在 org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.getDependencies (LifecycleDependencyResolver.java:269) 在 org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.resolveProjectDependencies (LifecycleDependencyResolver.java:147) 在 org.apache.maven.lifecycle.internal.MojoExecutor.ensureDependenciesAreResolved (MojoExecutor.java:248) 在 org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:202) 在 org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156) 在 org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148) 在 org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117) 在 org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81) 在 org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56) 在 org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128) 在 org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305) 在 org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192) 在 org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105) 在 org.apache.maven.cli.MavenCli.execute (MavenCli.java:957) 在 org.apache.maven.cli.MavenCli.doMain (MavenCli.java:289) 在 org.apache.maven.cli.MavenCli.main (MavenCli.java:193) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法) 在 sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke (Method.java:498) 在 org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282) 在 org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225) 在 org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406) 在 org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347) 原因:org.apache.maven.project.DependencyResolutionException:无法解析项目 com.org:foo-module3:jar:0.0.1-SNAPSHOT 的依赖项:找不到 com.org:foo-module1:jar:0.0。 ***/libs-snapshot 中的 1-SNAPSHOT 已缓存在本地存储库中,直到 central2 的更新间隔过去或强制更新后才会重新尝试解析 在 org.apache.maven.project.DefaultProjectDependenciesResolver.resolve (DefaultProjectDependenciesResolver.java:209) 在 org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.getDependencies (LifecycleDependencyResolver.java:243) 在 org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.resolveProjectDependencies (LifecycleDependencyResolver.java:147) 在 org.apache.maven.lifecycle.internal.MojoExecutor.ensureDependenciesAreResolved (MojoExecutor.java:248) 在 org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:202) 在 org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156) 在 org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148) 在 org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117) 在 org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81) 在 org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56) 在 org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128) 在 org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305) 在 org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192) 在 org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105) 在 org.apache.maven.cli.MavenCli.execute (MavenCli.java:957) 在 org.apache.maven.cli.MavenCli.doMain (MavenCli.java:289) 在 org.apache.maven.cli.MavenCli.main (MavenCli.java:193) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法) 在 sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke (Method.java:498) 在 org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282) 在 org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225) 在 org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406) 在 org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347) 引起:org.eclipse.aether.resolution.DependencyResolutionException: 找不到com.oorg:foo-module1:jar:0.0.1-SNAPSHOT in ***/libs-snapshot 缓存在本地仓库,解析不会重新尝试,直到 central2 的更新间隔已过或强制更新 在 org.eclipse.aether.internal.impl.DefaultRepositorySystem.resolveDependencies (DefaultRepositorySystem.java:357) 在 org.apache.maven.project.DefaultProjectDependenciesResolver.resolve (DefaultProjectDependenciesResolver.java:202) 在 org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.getDependencies (LifecycleDependencyResolver.java:243) 在 org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.resolveProjectDependencies (LifecycleDependencyResolver.java:147) 在 org.apache.maven.lifecycle.internal.MojoExecutor.ensureDependenciesAreResolved (MojoExecutor.java:248) 在 org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:202) 在 org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156) 在 org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148) 在 org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117) 在 org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81) 在 org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56) 在 org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128) 在 org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305) 在 org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192) 在 org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105) 在 org.apache.maven.cli.MavenCli.execute (MavenCli.java:957) 在 org.apache.maven.cli.MavenCli.doMain (MavenCli.java:289) 在 org.apache.maven.cli.MavenCli.main (MavenCli.java:193) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法) 在 sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke (Method.java:498) 在 org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282) 在 org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225) 在 org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406) 在 org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347) 原因:org.eclipse.aether.resolution.ArtifactResolutionException: 找不到 com.org:foo-module1:jar:0.0.1-SNAPSHOT in ***/libs-snapshot 缓存在本地仓库,解析不会重新尝试,直到 central2 的更新间隔已过或强制更新 在 org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve (DefaultArtifactResolver.java:424) 在 org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts (DefaultArtifactResolver.java:229) 在 org.jfrog.build.extractor.maven.resolver.ArtifactoryEclipseArtifactResolver.resolveArtifacts (ArtifactoryEclipseArtifactResolver.java:56) 在 org.eclipse.aether.internal.impl.DefaultRepositorySystem.resolveDependencies (DefaultRepositorySystem.java:340) 在 org.apache.maven.project.DefaultProjectDependenciesResolver.resolve (DefaultProjectDependenciesResolver.java:202) 在 org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.getDependencies (LifecycleDependencyResolver.java:243) 在 org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.resolveProjectDependencies (LifecycleDependencyResolver.java:147) 在 org.apache.maven.lifecycle.internal.MojoExecutor.ensureDependenciesAreResolved (MojoExecutor.java:248) 在 org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:202) 在 org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156) 在 org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148) 在 org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117) 在 org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81) 在 org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56) 在 org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128) 在 org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305) 在 org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192) 在 org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105) 在 org.apache.maven.cli.MavenCli.execute (MavenCli.java:957) 在 org.apache.maven.cli.MavenCli.doMain (MavenCli.java:289) 在 org.apache.maven.cli.MavenCli.main (MavenCli.java:193) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法) 在 sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke (Method.java:498) 在 org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282) 在 org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225) 在 org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406) 在 org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347) 引起:org.eclipse.aether.transfer.ArtifactNotFoundException: Failure to find com.org:foo-module1:jar:0.0.1-SNAPSHOT in ***/libs-snapshot 缓存在本地仓库,解析不会重新尝试,直到 central2 的更新间隔已过或强制更新 在 org.eclipse.aether.internal.impl.DefaultUpdateCheckManager.newException (DefaultUpdateCheckManager.java:218) 在 org.eclipse.aether.internal.impl.DefaultUpdateCheckManager.checkArtifact (DefaultUpdateCheckManager.java:193) 在 org.eclipse.aether.internal.impl.DefaultArtifactResolver.gatherDownloads (DefaultArtifactResolver.java:559) 在 org.eclipse.aether.internal.impl.DefaultArtifactResolver.performDownloads (DefaultArtifactResolver.java:483) 在 org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve (DefaultArtifactResolver.java:401) 在 org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts (DefaultArtifactResolver.java:229) 在 org.jfrog.build.extractor.maven.resolver.ArtifactoryEclipseArtifactResolver.resolveArtifacts (ArtifactoryEclipseArtifactResolver.java:56) 在 org.eclipse.aether.internal.impl.DefaultRepositorySystem.resolveDependencies (DefaultRepositorySystem.java:340) 在 org.apache.maven.project.DefaultProjectDependenciesResolver.resolve (DefaultProjectDependenciesResolver.java:202) 在 org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.getDependencies (LifecycleDependencyResolver.java:243) 在 org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.resolveProjectDependencies (LifecycleDependencyResolver.java:147) 在 org.apache.maven.lifecycle.internal.MojoExecutor.ensureDependenciesAreResolved (MojoExecutor.java:248) 在 org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:202) 在 org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156) 在 org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148) 在 org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117) 在 org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81) 在 org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56) 在 org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128) 在 org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305) 在 org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192) 在 org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105) 在 org.apache.maven.cli.MavenCli.execute (MavenCli.java:957) 在 org.apache.maven.cli.MavenCli.doMain (MavenCli.java:289) 在 org.apache.maven.cli.MavenCli.main (MavenCli.java:193) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法) 在 sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke (Method.java:498) 在 org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282) 在 org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225) 在 org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406) 在 org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347) [错误] [错误] 使用 -X 开关重新运行 Maven 以启用完整的调试日志记录。 [错误] [错误] 有关错误和可能的解决方案的更多信息,请阅读以下文章: [错误] [帮助 1] http://cwiki.apache.org/confluence/display/MAVEN/DependencyResolutionException [错误] [错误] 更正问题后,您可以使用命令恢复构建 [错误] mvn <args> -rf :foo-module3
解决方案
这种方法没有错。事实上,我已经建立了一个具有类似设计的项目。如果您添加了 module1 和 module2 作为 module3 的依赖项,那么您必须首先确保 module1 和 module2 安装在本地 .m2 存储库中。
为了进行测试,您可以mvn install
先在 module1 和 module2 中运行。在 mvn 控制台日志中,您也会看到 /path/to/your/module1/jar 安装在 /local/directory/.m2/... 中,您可以验证您的模块是否安装正确。然后你可以在 module3 中运行 mvn isntall....
推荐阅读
- tensorflow - Trying to Analyze Mnist Dataset Through TensorBoard
- loops - Tkinter windows in loop, get a TypeError
- c# - Unity3d:如何将字典存储为 JSON 中的对象?
- javascript - 从数组 60 多个选项 javascript 中选择随机图像
- javascript - 传播省略不会省略动作处理程序内的属性
- botframework - 是否可以在 MS Teams 中使用自动完成输入文本字段呈现自适应卡片
- cypress - Cypress Mochaawsome 报告 - HTML 报告仅显示第二个 js 文件的结果,尽管我已经成功执行了 2 个 js 文件
- sinch - 未调用 Sinch 已应答呼叫事件回调 (ACE)
- php - How to add an image dynamically to post title if it is published today or less than 2 days
- c++ - 从文件读取时尝试进行条件循环