4

我正在尝试迁移到 maven 作为构建系统,以便对依赖项进行更标准的管理。

这是我做的步骤和我问的简单的(maven newbie)问题。这个过程是我能想象的最简单的,所以这个问题应该很容易重现。

  1. 让我们从文件、新项目、Maven、Web 应用程序开始。在以下表格中,我保留所有默认值,但对于我选择“Apache Tomcat 7.0.11.0”的应用程序服务器字段。我注意到这个向导没有提出任何框架(Sring、Hibernate 等),而标准的非 Maven 项目创建向导确实允许包含框架的选择。

如果我们现在看一下这个项目,这就是我们所看到的:

在此处输入图像描述

所以第一个问题是:为什么已经包含了 spring,甚至在此之前我已经明确添加了它?

让我们看看项目属性:
在此处输入图像描述

所以没有选择任何框架。我只想将 spring 用于它的依赖注入容器(稍后我可能会添加 spring 安全性,但这不是此刻的优先事项)。如上所述,我是否需要再次添加它,因为已经包含了一些核心模块?

  1. 在项目属性中,在框架节点中,我添加了 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 项目的开箱即用行为。如何解决这个问题?

4

3 回答 3

3

使用 Tomcat 7.0.27 我没有看到第一个问题(Spring 依赖项),但我可以复制第二个问题(无法下载依赖项)。检查pom.xml我发现它有错误,例如这种依赖:

<dependency>
    <groupId>unknown.binary</groupId>
    <artifactId>derbyclient</artifactId>
    <version>SNAPSHOT</version>
</dependency>

和这个存储库:

<repository>
    <id>unknown-jars-temp-repo</id>
    <name>A temporary repository created by NetBeans for libraries and jars it 
    could not identify. Please replace the dependencies in this repository with 
    correct ones and delete this repository.</name>
    <url>file:${project.basedir}/lib</url>
</repository>

即使 Netbeans wiki 页面显示了使用 Maven 项目选择框架的示例,我还是建议从“依赖项”节点的“添加依赖项...”选项添加依赖项。

编辑:pom.xml在不同的机器上重复相同的步骤后添加错误。

于 2013-01-14T05:37:49.407 回答
3

您可以通过在存储库部分下添加以下存储库来手动修改 POM 文件:

<repositories>
   ...
   <repository>
      <id>java.net-m2</id>
      <name>java.net - Maven 2</name>
      <url>https://repository.jboss.org/nexus/content/repositories/java.net-m2</url>
   </repository>
</repositories>
于 2014-02-04T21:41:37.690 回答
-1

You can always download the dependencies manually. For example you can download - jdbc-stdext-2.0.jar from http://download.java.net/maven/2/javax/sql/jdbc-stdext/2.0/jdbc-stdext-2.0.jar - jta-1.0.1B.jar from http://download.java.net/maven/2/javax/transaction/jta/1.0.1B/jta-1.0.1B.jar

then put the jars in the correct location in your .m2 repository. - .m2/repository/javax/sql/jdbc-stdext/2.0/jdbc-stdext-2.0.jar - .m2/repository/javax/transaction/jta/1.0.1B/jta-1.0.1B.jar

then run maven clean and build.

于 2013-04-01T21:02:02.003 回答