2013-01-12 56 views
4

我試圖移動到maven作爲構建系統,以便對依賴關係進行更加標準的管理。NetBeans 7.2,啓動一個maven spring項目並添加休眠

這是我所做的步驟以及我問的簡單的(maven newbie)問題。這個過程是最直接的,我可以immagine,所以這個問題應該很容易重現。

  1. 讓我們從File,New Project,Maven,Web Application開始吧。 在以下表格中,我保留了所有默認值,但是保留了我選擇「Apache Tomcat 7.0.11.0」的應用程序服務器字段。 我注意到這個嚮導沒有提出任何框架(Sring,Hibernate等),而標準的非Maven項目創建嚮導確實允許框架的選擇包含。

如果我們看一下現在的項目,這裏就是我們看到:

enter image description here

因此,第一個問題是:爲什麼春天已經包含,在那之前我」已明確添加它?

讓我們看看項目屬性:
enter image description here

所以沒有框架被選中。 我想使用彈簧只是爲了它的依賴注入容器(稍後我可能會添加彈簧安全性,但這不是此時的優先事項)。 我是否需要重新添加它,因爲如上所述,一些核心模塊已包含在內?

  1. 在項目屬性中,在框架節點中,我添加了Hibernate並選擇了一個數據庫連接。依賴現在變成如下。

enter image description here

他們兩個(我在截圖中作了重點介紹)被標記爲「依賴尚未下載。建設項目以糾正錯誤」(你可以看到這個消息的提示當你將指針移到它們上面時)。我已經構建了該項目,但錯誤仍然存​​在。
在行家的輸出,我看到:

 
Failed to execute goal on project CreatingMavenSpringProject: Could not resolve dependencies for project com.mycompany:CreatingMavenSpringProject:war:1.0-SNAPSHOT: The following artifacts could not be resolved: javax.sql:jdbc-stdext:jar:2.0, javax.transaction:jta:jar:1.0.1B: Could not find artifact javax.sql:jdbc-stdext:jar:2.0 in unknown-jars-temp-repo (file:C:\Users\agostino\Documents\NetBeansProjects\CreatingMavenSpringProject/lib) -> [Help 1] 

To see the full stack trace of the errors, re-run Maven with the -e switch. 
Re-run Maven using the -X switch to enable full debug logging. 

我試過,因爲它表明:

 
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal o 
n project CreatingMavenSpringProject: Could not resolve dependencies for project 
com.mycompany:CreatingMavenSpringProject:war:1.0-SNAPSHOT: The following artifa 
cts could not be resolved: javax.sql:jdbc-stdext:jar:2.0, javax.transaction:jta: 
jar:1.0.1B: Failure to find javax.sql:jdbc-stdext:jar:2.0 in file:C:\Users\agost 
ino\Documents\NetBeansProjects\CreatingMavenSpringProject/lib was cached in the 
local repository, resolution will not be reattempted until the update interval o 
f unknown-jars-temp-repo has elapsed or updates are forced 
     at org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.getDe 
pendencies(LifecycleDependencyResolver.java:210) 
     at org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.resol 
veProjectDependencies(LifecycleDependencyResolver.java:117) 
     at org.apache.maven.lifecycle.internal.MojoExecutor.ensureDependenciesAr 
eResolved(MojoExecutor.java:258) 
     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor 
.java:201) 
     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor 
.java:153) 
     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor 
.java:145) 
     at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProje 
ct(LifecycleModuleBuilder.java:84) 
     at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProje 
ct(LifecycleModuleBuilder.java:59) 
     at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBu 
ild(LifecycleStarter.java:183) 
     at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(Lifecycl 
eStarter.java:161) 
     at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320) 
     at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156) 
     at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537) 
     at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196) 
     at org.apache.maven.cli.MavenCli.main(MavenCli.java:141) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl. 
java:39) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces 
sorImpl.java:25) 
     at java.lang.reflect.Method.invoke(Method.java:597) 
     at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Laun 
cher.java:290) 
     at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.jav 
a:230) 
     at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(La 
uncher.java:409) 
     at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java: 
352) 
Caused by: org.apache.maven.project.DependencyResolutionException: Could not res 
olve dependencies for project com.mycompany:CreatingMavenSpringProject:war:1.0-S 
NAPSHOT: The following artifacts could not be resolved: javax.sql:jdbc-stdext:ja 
r:2.0, javax.transaction:jta:jar:1.0.1B: Failure to find javax.sql:jdbc-stdext:j 
ar:2.0 in file:C:\Users\agostino\Documents\NetBeansProjects\CreatingMavenSpringP 
roject/lib was cached in the local repository, resolution will not be reattempte 
d until the update interval of unknown-jars-temp-repo has elapsed or updates are 
forced 
     at org.apache.maven.project.DefaultProjectDependenciesResolver.resolve(D 
efaultProjectDependenciesResolver.java:189) 
     at org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.getDe 
pendencies(LifecycleDependencyResolver.java:185) 
     ... 22 more 
Caused by: org.sonatype.aether.resolution.DependencyResolutionException: The fol 
lowing artifacts could not be resolved: javax.sql:jdbc-stdext:jar:2.0, javax.tra 
nsaction:jta:jar:1.0.1B: Failure to find javax.sql:jdbc-stdext:jar:2.0 in file:C 
:\Users\agostino\Documents\NetBeansProjects\CreatingMavenSpringProject/lib was c 
ached in the local repository, resolution will not be reattempted until the upda 
te interval of unknown-jars-temp-repo has elapsed or updates are forced 
     at org.sonatype.aether.impl.internal.DefaultRepositorySystem.resolveDepe 
ndencies(DefaultRepositorySystem.java:375) 
     at org.apache.maven.project.DefaultProjectDependenciesResolver.resolve(D 
efaultProjectDependenciesResolver.java:183) 
     ... 23 more 
Caused by: org.sonatype.aether.resolution.ArtifactResolutionException: The follo 
wing artifacts could not be resolved: javax.sql:jdbc-stdext:jar:2.0, javax.trans 
action:jta:jar:1.0.1B: Failure to find javax.sql:jdbc-stdext:jar:2.0 in file:C:\ 
Users\agostino\Documents\NetBeansProjects\CreatingMavenSpringProject/lib was cac 
hed in the local repository, resolution will not be reattempted until the update 
interval of unknown-jars-temp-repo has elapsed or updates are forced 
     at org.sonatype.aether.impl.internal.DefaultArtifactResolver.resolve(Def 
aultArtifactResolver.java:538) 
     at org.sonatype.aether.impl.internal.DefaultArtifactResolver.resolveArti 
facts(DefaultArtifactResolver.java:216) 
     at org.sonatype.aether.impl.internal.DefaultRepositorySystem.resolveDepe 
ndencies(DefaultRepositorySystem.java:358) 
     ... 24 more 
Caused by: org.sonatype.aether.transfer.ArtifactNotFoundException: Failure to fi 
nd javax.sql:jdbc-stdext:jar:2.0 in file:C:\Users\agostino\Documents\NetBeansPro 
jects\CreatingMavenSpringProject/lib was cached in the local repository, resolut 
ion will not be reattempted until the update interval of unknown-jars-temp-repo 
has elapsed or updates are forced 
     at org.sonatype.aether.impl.internal.DefaultUpdateCheckManager.newExcept 
ion(DefaultUpdateCheckManager.java:230) 
     at org.sonatype.aether.impl.internal.DefaultUpdateCheckManager.checkArti 
fact(DefaultUpdateCheckManager.java:204) 
     at org.sonatype.aether.impl.internal.DefaultArtifactResolver.resolve(Def 
aultArtifactResolver.java:427) 
     ... 26 more 

現在我停留在這一點上,請注意,這是您嘗試添加休眠時maven項目的開箱即用行爲。如何解決這個問題?

回答

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錯誤後,在不同的機器重複相同的步驟。

+0

您可以顯示由Netbeans中產生的pom.xml的錯誤? – AgostinoX

+0

@AgostinoX我已經添加了兩個。 – madth3

-1

您可以隨時手動下載依賴關係。從http://download.java.net/maven/2/javax/transaction/jta/1.0.1B/jta-1.0.1B.jar

JTA-1.0.1B.jar然後把罐子在正確的位置在您的倉庫的.m2 - 從http://download.java.net/maven/2/javax/sql/jdbc-stdext/2.0/jdbc-stdext-2.0.jar JDBC-stdext-2.0.jar - 例如,你可以下載 。 - .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

然後運行maven clean並構建。

+0

downvoted,因爲它是手動下載庫並將它們放到本地maven repo中的一個大反模式,這種方式構建將只在本地計算機上運行,​​而其他人(包括您的CI服務器)將再次出現同樣的問題 - 爲什麼那麼首先使用Maven? 更好地添加存儲庫並讓Maven正確執行它的工作,正如@endru的回答中所建議的那樣 – Gregor

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>