我正在尝试迁移到 maven 作为构建系统,以便对依赖项进行更标准的管理。
这是我做的步骤和我问的简单的(maven newbie)问题。这个过程是我能想象的最简单的,所以这个问题应该很容易重现。
- 让我们从文件、新项目、Maven、Web 应用程序开始。在以下表格中,我保留所有默认值,但对于我选择“Apache Tomcat 7.0.11.0”的应用程序服务器字段。我注意到这个向导没有提出任何框架(Sring、Hibernate 等),而标准的非 Maven 项目创建向导确实允许包含框架的选择。
如果我们现在看一下这个项目,这就是我们所看到的:
所以第一个问题是:为什么已经包含了 spring,甚至在此之前我已经明确添加了它?
让我们看看项目属性:
所以没有选择任何框架。我只想将 spring 用于它的依赖注入容器(稍后我可能会添加 spring 安全性,但这不是此刻的优先事项)。如上所述,我是否需要再次添加它,因为已经包含了一些核心模块?
- 在项目属性中,在框架节点中,我添加了 Hibernate 并选择了一个数据库连接。依赖关系现在变为如下。
其中两个(我在屏幕截图中突出显示了它们)被标记为“尚未下载依赖项。构建项目以纠正错误”(当您将指针移到它们上方时,您可以看到此消息作为提示)。我已经构建了项目,但错误仍然存在。
在 Maven 的输出中,我看到:
无法在项目 CreatingMavenSpringProject 上执行目标:无法解析项目 com.mycompany:CreatingMavenSpringProject:war:1.0-SNAPSHOT 的依赖项:无法解析以下工件:javax.sql:jdbc-stdext:jar:2.0,javax.transaction: jta:jar:1.0.1B:在 unknown-jars-temp-repo(文件:C:\Users\agostino\Documents\NetBeansProjects\CreatingMavenSpringProject/lib)中找不到工件 javax.sql:jdbc-stdext:jar:2.0 - > [帮助1] 要查看错误的完整堆栈跟踪,请使用 -e 开关重新运行 Maven。 使用 -X 开关重新运行 Maven 以启用完整的调试日志记录。
我已经按照建议进行了尝试:
org.apache.maven.lifecycle.LifecycleExecutionException: 未能执行目标o n 项目CreatingMavenSpringProject:无法解析项目的依赖关系 com.mycompany:CreatingMavenSpringProject:war:1.0-SNAPSHOT: 以下工件 cts 无法解析:javax.sql:jdbc-stdext:jar:2.0, javax.transaction:jta: jar:1.0.1B:无法在文件:C:\Users\agost 中找到 javax.sql:jdbc-stdext:jar:2.0 ino\Documents\NetBeansProjects\CreatingMavenSpringProject/lib 被缓存在 本地存储库,直到更新间隔才会重新尝试解析 f unknown-jars-temp-repo 已过或强制更新 在 org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.getDe 未决(LifecycleDependencyResolver.java:210) 在 org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.resol veProjectDependencies(LifecycleDependencyResolver.java:117) 在 org.apache.maven.lifecycle.internal.MojoExecutor.ensureDependenciesAr eResolved(MojoExecutor.java:258) 在 org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor .java:201) 在 org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor .java:153) 在 org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor .java:145) 在 org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProje ct(LifecycleModuleBuilder.java:84) 在 org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProje ct(LifecycleModuleBuilder.java:59) 在 org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBu ild(LifecycleStarter.java:183) 在 org.apache.maven.lifecycle.internal.LifecycleStarter.execute(生命周期 eStarter.java:161) 在 org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320) 在 org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156) 在 org.apache.maven.cli.MavenCli.execute(MavenCli.java:537) 在 org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196) 在 org.apache.maven.cli.MavenCli.main(MavenCli.java:141) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl。 爪哇:39) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces sorImpl.java:25) 在 java.lang.reflect.Method.invoke(Method.java:597) 在 org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Laun cher.java:290) 在 org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.jav 一个:230) 在 org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(La uncher.java:409) 在 org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java: 352) 引起:org.apache.maven.project.DependencyResolutionException:无法解决 项目 com.mycompany:CreatingMavenSpringProject:war:1.0-S 的 olve 依赖项 NAPSHOT:无法解析以下工件:javax.sql:jdbc-stdext:ja r:2.0, javax.transaction:jta:jar:1.0.1B: 找不到 javax.sql:jdbc-stdext:j ar:2.0 在文件中:C:\Users\agostino\Documents\NetBeansProjects\CreatingMavenSpringP roject/lib 已缓存在本地存储库中,将不会重新尝试解析 d 直到 unknown-jars-temp-repo 的更新间隔已经过去或更新 被迫 在 org.apache.maven.project.DefaultProjectDependenciesResolver.resolve(D efaultProjectDependenciesResolver.java:189) 在 org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.getDe 未决(LifecycleDependencyResolver.java:185) ... 22 更多 引起:org.sonatype.aether.resolution.DependencyResolutionException:fol 降低工件无法解决:javax.sql:jdbc-stdext:jar:2.0, javax.tra nsaction:jta:jar:1.0.1B: 在文件:C 中找不到 javax.sql:jdbc-stdext:jar:2.0 :\Users\agostino\Documents\NetBeansProjects\CreatingMavenSpringProject/lib 是 c 在本地存储库中疼痛,直到更新后才会重新尝试解析 unknown-jars-temp-repo 的时间间隔已过或强制更新 在 org.sonatype.aether.impl.internal.DefaultRepositorySystem.resolveDepe ndencies(DefaultRepositorySystem.java:375) 在 org.apache.maven.project.DefaultProjectDependenciesResolver.resolve(D efaultProjectDependenciesResolver.java:183) ... 23 更多 引起:org.sonatype.aether.resolution.ArtifactResolutionException:后续 翼工件无法解析:javax.sql:jdbc-stdext:jar:2.0, javax.trans 操作:jta:jar:1.0.1B:在文件:C:\ 中找不到 javax.sql:jdbc-stdext:jar:2.0 失败 Users\agostino\Documents\NetBeansProjects\CreatingMavenSpringProject/lib 是 cac 在本地存储库中,直到更新才会重新尝试解析 unknown-jars-temp-repo 的间隔已过或强制更新 在 org.sonatype.aether.impl.internal.DefaultArtifactResolver.resolve(Def aultArtifactResolver.java:538) 在 org.sonatype.aether.impl.internal.DefaultArtifactResolver.resolveArti 事实(DefaultArtifactResolver.java:216) 在 org.sonatype.aether.impl.internal.DefaultRepositorySystem.resolveDepe ndencies(DefaultRepositorySystem.java:358) ... 24 更多 引起:org.sonatype.aether.transfer.ArtifactNotFoundException: 失败 在文件中找到 javax.sql:jdbc-stdext:jar:2.0:C:\Users\agostino\Documents\NetBeansPro jects\CreatingMavenSpringProject/lib 被缓存在本地存储库中,resolut 在 unknown-jars-temp-repo 的更新间隔之前不会重新尝试 ion 已过去或强制更新 在 org.sonatype.aether.impl.internal.DefaultUpdateCheckManager.newExcept 离子(DefaultUpdateCheckManager.java:230) 在 org.sonatype.aether.impl.internal.DefaultUpdateCheckManager.checkArti 事实(DefaultUpdateCheckManager.java:204) 在 org.sonatype.aether.impl.internal.DefaultArtifactResolver.resolve(Def aultArtifactResolver.java:427) ... 26 更多
现在我被困在这一点上,请注意,当您尝试添加 hibernate 时,这是 maven 项目的开箱即用行为。如何解决这个问题?