2010-02-18 54 views
7

我只是從.NET轉換到JAVA,並且必須使用Spring 3.0.0啓動JAVA項目。和休眠。Spring 3.0.0依賴用Maven下載

有人可以向我解釋step_by_step如何使用Maven下載Spring依賴關係。我只花了整整一天的時間,絕對沒有成功。

PS。我有Java 1.5.06,並且已經下載了Spring(沒有依賴關係)並安裝了Maven。

編輯:

c0mrade:

我覺得作爲春天3.0.0。他們 認爲是可選依賴 所以他們需要單獨 每個依賴包括在內,這只是一個猜測 我不知道這件事,如果帕斯卡或 更有經驗的人證實了我的 聲明那麼它的真實,所以遠我 彈簧2.5.5

是的......他們肯定是可選的,所以這就是我所做的。我只是將spring-orm pom文件中的hibernate依賴項複製/粘貼到myproject pom文件中,這意味着現在我在我的pom文件中一起定義了spring和hibernate依賴項。然後我在myproject上運行「mvn install」,然後手動將所有spring和hibernate jar複製到我的項目的lib文件夾中。

所以現在我有一個Java項目與春季和冬眠。 :)

我正在學習Java,這只是我的第二天,所以請告訴我,如果我做了一些可怕的錯誤。

更新:

rlovtang:

當使用maven不要手動 下載任何依賴關係(如 春季),無論你的手任何 罐子複製到你的項目的lib夾。所有 這是由您自動運行時通過 Maven當您運行'mvn安裝'。 你打包你的申請,是 戰爭?

我明白這一點。我很清楚,Maven會自動管理我的本地存儲庫中依賴關係的類路徑,所以我的項目可以在本地機器上正常工作。而且我也是紅色的,你可以選擇在WAR或EAR中打包你的依賴關係jar包,但是如果我想將我的應用程序打包爲JAR文件和輸出(目標)文件夾內的所有依賴關係JAR文件呢? 您知道,我不想僅使用pom.xml部署我的JAR文件,但是我的應用程序需要運行所需的所有JAR。


它仍然不能正常工作:

這是我的聚甲醛。XML:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 

<modelVersion>4.0.0</modelVersion> 

<dependencies> 

    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring</artifactId> 
     <version>3.0.0.</version> 
    </dependency> 
</dependencies> 

當我打 「MVN安裝」 我得到這個異常:

[INFO]掃描的項目... [INFO] -------- -------------------------------------------------- -------------- [錯誤]致命錯誤 [INFO] -------------------------- ---------------------------------------------- [INFO] null [INFO] --------------------------------------------- --------------------------- [INFO]在org.apache.maven.artifact.versioning.DefaultArtifactVersion.parseVersion(DefaultArtifactVersion.jav 一個:136)跟蹤 顯示java.lang.NullPointerException 。 在org.apache.maven.artifact.versioning.DefaultArtifactVersion( DefaultArtifactVersion.java:47) at org.apache.maven.artifact.versioning.VersionRange.createFromVersion(VersionRange.java:219) at org.apache.maven.project.artifact.ProjectArtifactFactory.create(ProjectArtifactFactory.java:37) 在org.apache.maven.project.DefaultMavenProjectBuilder.processProjectLogic(DefaultMavenProjectBuilder。 的java:1017) 在org.apache.maven.project.DefaultMavenProjectBuilder.buildInternal(DefaultMavenProjectBuilder.java:8 80) 在org.apache.maven.project.DefaultMavenProjectBuilder.buildFromSourceFileInternal(DefaultMavenProject Builder.java:508) 在org.apache.maven.project.DefaultMavenProjectBuilder.build(DefaultMavenProjectBuilder.java:200) at org.apache.maven.DefaultMaven.getProject(DefaultMaven.java:604) at org.apache.maven.DefaultMaven.collectProjects(DefaultMaven .java:487) at org.apache.maven.DefaultMaven.getProjects(DefaultMaven.java:391) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:272) at org.apache.maven.De faultMaven.execute(DefaultMaven.java:138) at org.apache.maven.cli.MavenCli.main(MavenCli.java:362) at org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java: 60) 在sun.reflect.NativeMethodAccessorImpl.invoke0(本機方法) 在sun.reflect.NativeMethodAccessorImpl.invoke(未知來源) 在sun.reflect.DelegatingMethodAccessorImpl.invoke(未知來源) 在java.lang.reflect.Method中.invoke(未知來源) 在org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315) 在org.codehaus.classworlds.Launcher.launch(Launcher.java:255) 在org.codehaus.classworlds。 Launcher.mainWithExitCode(Launcher.java:430) at org.codehaus.classworlds.Launche r.main(Launcher.java:375) [INFO] ------------------------------------ ------------------------------------ [INFO]總時間:< 1秒 [信息]完成時間:Thu Feb 18 11:19:44 CET 2010 [INFO] Final Memory:1M/2M [INFO] ----------------------- -------------------------------------------------

+1

我也建議你閱讀例如免費電子書行家,我在幾天基本上了解到行家,當然基礎..但我現在仍然要求每一個,然後兩個問題關於maven – ant

+1

@Goran pokusaj 3.0.0.RELEASE作爲Kees de Kooter建議的 – ant

+0

還是一樣的......我試過「3.0.0.RELEASE」,並且還嘗試了artifactId的「spring-context」,但它仍然給我這個同樣的錯誤。 – Goran

回答

12

其實,你的POM是錯的,它缺少必要的部件。你至少需要這樣的事情(這是一個最小POM):

<project> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.mycompany.myproject</groupId> 
    <artifactId>my-app</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <name>My App</name> 
</project> 

要加上彈簧的依賴,我則建議使用下列內容:

<project> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.mycompany.myproject</groupId> 
    <artifactId>my-app</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <name>My App</name> 

    <properties> 
    <org.springframework.version>3.0.0.RELEASE</org.springframework.version> 
    </properties> 

    <dependencies> 

    <!-- 
     Core utilities used by other modules. 
     Define this if you use Spring Utility APIs (org.springframework.core.*/org.springframework.util.*) 
    --> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-core</artifactId> 
     <version>${org.springframework.version}</version> 
    </dependency> 

    </dependencies> 
</project> 

春季文物的完整列表,看看Obtaining Spring 3 Artifacts with Maven並拿起你需要的東西。

更新:只是FYI,有很多repository search engines,可以幫助您找到工件。如果你不習慣Maven,這可能會有所幫助。另外請注意,您可以爲此獲得一些IDE支持(Idea,Eclipse,NetBeans,我認爲它們都提供了存儲庫搜索功能)。其實,在你的情況下,我建議使用SpringSource Tools Suite(STS),它是Eclipse的集成版本(捆綁了一些用於Spring項目開發的插件,包括Maven支持)。 STS是一個完全集成的環境,非常接近您可以在.NET世界IMO中獲得的東西。你會喜歡的。

+0

我將所有這些粘貼到我的pom.xml中,仍然得到NullPointerException ... 請注意,我只有1天的JAVA經驗。 – Goran

+1

@Pascal:他是Java,Maven和Spring中的新手..也許在示例中添加$ {org.springframework.version}屬性,或者將其替換爲實際版本......他很困惑,因爲它; ..) – Tim

+2

@Tim我已經完成了(並且我提供的鏈接是使用這個屬性,我更喜歡使用它,如果你需要很多工件的話,這是一件好事)。 –

2

只要把它放在你的pom中。XML

<dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring</artifactId> 
      <version>3.0.0.RELEASE</version> 
     </dependency> 

有幾個Maven倉庫,其中來自你可以下載庫,這裏是一個

http://maven.nuxeo.org/nexus/index.html#welcome

如果存在對信息庫春天的特別版本,我目前使用的這應該工作2.5.5

UPDATE

您會看到,我不想僅使用pom.xml部署我的JAR 文件,但我的 應用程序需要運行所有的 JAR。

然後你需要一個叫做assembly plugin的東西,它會使你的依賴關係變成.jar,你記得我給的鏈接,搜索程序集關鍵字以瞭解更多。但這裏是我如何與裝配做到這一點:

<plugin> 
<artifactId>maven-assembly-plugin</artifactId> 
<configuration> 
<descriptorRefs> 
<descriptorRef>jar-with-dependencies</descriptorRef> 
</descriptorRefs> 
</configuration> 
</plugin> 

mvn clean install assembly:assembly 

如果你想要的.jar也就是說,你需要指定<packaging>jar</packaging>

+1

該版本應該是「3.0.0.RELEASE」 –

+1

@Kees de Kooteras我說我使用2.5.5他可以在存儲庫上查看它的確切版本號。 – ant

+0

c0mrade說:「他可以在存儲庫上查找它確切版本號「......如何? – Goran

2

在Spring 3的不再有一個大superjar。你應該選擇你需要的部分。你至少需要:

<dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-core</artifactId> 
    <version>3.0.0.RELEASE</version> 
</dependency> 
1
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>org.my.application</groupId> 
    <artifactId>slickapp</artifactId> 
    <packaging>jar</packaging> 
    <version>1.0-SNAPSHOT</version> 
    <name>My application</name> 
    <inceptionYear>2010</inceptionYear> 


    <build> 
    <plugins> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-surefire-plugin</artifactId> 
     <version>2.4.2</version> 
     <configuration> 
      <argLine>-Xmx512m -XX:MaxPermSize=256M -XX:PermSize=20M</argLine> 
     </configuration> 
     </plugin> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-install-plugin</artifactId> 
     <version>2.2</version> 
     </plugin> 
     <plugin> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <configuration> 
      <source>1.5</source> 
      <target>1.5</target> 
      <fork>true</fork> 
      <meminitial>128m</meminitial> 
      <maxmem>512m</maxmem> 
     </configuration> 
     </plugin> 
    </plugins> 
    </build> 
    <dependencies> 
     <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-core</artifactId> 
     <version>${spring.version}</version> 
     <exclusions> 
      <exclusion> 
      <groupId>commons-logging</groupId> 
      <artifactId>commons-logging</artifactId> 
      </exclusion> 
     </exclusions> 
     </dependency> 
     <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-aop</artifactId> 
     <version>${spring.version}</version> 
     <exclusions> 
      <exclusion> 
      <groupId>commons-logging</groupId> 
      <artifactId>commons-logging</artifactId> 
      </exclusion> 
     </exclusions> 
     </dependency> 
     <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-context</artifactId> 
     <version>${spring.version}</version> 
     <exclusions> 
      <exclusion> 
      <groupId>commons-logging</groupId> 
      <artifactId>commons-logging</artifactId> 
      </exclusion> 
     </exclusions> 
     </dependency> 
     <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-context-support</artifactId> 
     <version>${spring.version}</version> 
     <exclusions> 
      <exclusion> 
      <groupId>commons-logging</groupId> 
      <artifactId>commons-logging</artifactId> 
      </exclusion> 
     </exclusions> 
     </dependency> 
     <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-test</artifactId> 
     <version>${spring.version}</version> 
     <exclusions> 
      <exclusion> 
      <groupId>commons-logging</groupId> 
      <artifactId>commons-logging</artifactId> 
      </exclusion> 
     </exclusions> 
     </dependency> 
     <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-jdbc</artifactId> 
     <version>${spring.version}</version> 
     <exclusions> 
      <exclusion> 
      <groupId>commons-logging</groupId> 
      <artifactId>commons-logging</artifactId> 
      </exclusion> 
     </exclusions> 
     </dependency> 
     <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-beans</artifactId> 
     <version>${spring.version}</version> 
     <exclusions> 
      <exclusion> 
      <groupId>commons-logging</groupId> 
      <artifactId>commons-logging</artifactId> 
      </exclusion> 
     </exclusions> 
     </dependency> 
     <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-tx</artifactId> 
     <version>${spring.version}</version> 
     <exclusions> 
      <exclusion> 
      <groupId>commons-logging</groupId> 
      <artifactId>commons-logging</artifactId> 
      </exclusion> 
     </exclusions> 
     </dependency> 
     <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-beans</artifactId> 
     <version>${spring.version}</version> 
     <exclusions> 
      <exclusion> 
      <groupId>commons-logging</groupId> 
      <artifactId>commons-logging</artifactId> 
      </exclusion> 
     </exclusions> 
     </dependency> 
     <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-web</artifactId> 
     <version>${spring.version}</version> 
     <exclusions> 
      <exclusion> 
      <groupId>commons-logging</groupId> 
      <artifactId>commons-logging</artifactId> 
      </exclusion> 
     </exclusions> 
     </dependency> 
     <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-webmvc</artifactId> 
     <version>${spring.version}</version> 
     <exclusions> 
      <exclusion> 
      <groupId>commons-logging</groupId> 
      <artifactId>commons-logging</artifactId> 
      </exclusion> 
     </exclusions> 
     </dependency> 
     <dependency> 
     <groupId>aspectj</groupId> 
     <artifactId>aspectjweaver</artifactId> 
     <version>1.5.3</version> 
     </dependency> 
     <dependency> 
     <groupId>commons-logging</groupId> 
     <artifactId>commons-logging</artifactId> 
     <version>1.1.1</version> 
     <scope>provided</scope> 
     </dependency> 

     <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>4.7</version> 
     <scope>test</scope> 
     </dependency> 
    </dependencies> 

    <properties> 
    <spring.version>3.0.0.RELEASE</spring.version> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    </properties> 
</project> 
+1

我很匆忙,所以我不能添加很多解釋,我只是做了一些我已經寫過的東西的剪切和粘貼。 對不起。 您必須更改標籤groupId artifactId和打包(對於war文件而不是jar文件或對於多模塊項目的「pom」可能是「war」)中包含的信息。 你應該消除對你來說不必要的所有依賴。 – gicappa

0

好的。我得到這個工作:

<dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-orm</artifactId> 
    <version>${org.springframework.version}</version> 
</dependency> 

而且我看到正在下載的各種罐子,但仍沒有任何線索約其中他們在下載

另外我看到各種彈簧罐(例如spring-jdbc-3.0.0.RELEASE.jar)被下載,但Hibernate在哪裏?不應該下載Hibernate嗎?

+1

@Goran他們正在被下載到你的本地倉庫,在你的用戶根文件夾的.m2文件夾,以及有人提到春天不再是一個大的jar文件,你需要選擇你需要的依賴關係,然後將它們包含在你的pom下載到你的本地存儲庫,我建議你看看這本書不是很長但很實用,只需要閱讀幾章,你會在閱讀第二章之後明白它的含義。這裏是http://www.sonatype.com/books/mvnex-book/reference/public-book.html – ant

+1

@Goran也不是增加新的答案,它在這裏的常見做法是編輯你的帖子而不是添加新的答案除非你想回答你自己的問題,這是鼓勵的 – ant

+0

@ c0mrade:好的...我將從現在開始...... – Goran