使用Maven下载Spring 3.0.0依赖项

时间:2010-02-18 10:07:11

标签: java spring maven-2 dependencies

我只是从.NET转换到JAVA,必须用Spring 3.0.0启动JAVA项目。和Hibernate。

有人可以向我解释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文件夹中。

所以现在我有一个带有spring和hibernate的Java项目。 :)

我正在学习Java,这只是我的第二天,所以请告诉我是否做了一些可怕的错误。

更新

rlovtang:

  

使用maven时,不要手动操作   下载任何依赖项(如   春天),你也不会复制任何东西   jar到你的项目lib文件夹。所有   这是由自动照顾   当你运行'mvn install'时maven。怎么样   包装你的应用程序,是吗?   战?

我理解。我很清楚Ma​​ven会自动管理本地存储库中依赖项的类路径,这样我的项目就能在我的本地机器上正常工作。我还认为您可以选择在WAR或EAR中打包依赖项jar,但是如果我想将我的应用程序与JAR一起打包以及输出(目标)文件夹中的所有依赖项JAR,该怎么办? 您看,我不想仅使用pom.xml部署我的JAR文件,而是部署应用程序运行所需的所有JAR。


它仍然不起作用:

这是我的pom.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 install”时,我得到了这个例外:

[INFO]扫描项目...... [INFO] ----------------------------------------------- ------------------------- [错误]致命错误 [INFO] ----------------------------------------------- ------------------------- [INFO] null [INFO] ----------------------------------------------- ------------------------- [信息]追踪 显示java.lang.NullPointerException         在org.apache.maven.artifact.versioning.DefaultArtifactVersion.parseVersion(DefaultArtifactVersion.jav) 一:136)         在org.apache.maven.artifact.versioning.DefaultArtifactVersion。(DefaultArtifactVersion.java:47)         在org.apache.maven.artifact.versioning.VersionRange.createFromVersion(VersionRange.java:219)         在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)         在org.apache.maven.DefaultMaven.getProject(DefaultMaven.java:604)         在org.apache.maven.DefaultMaven.collectProjects(DefaultMaven.java:487)         在org.apache.maven.DefaultMaven.getProjects(DefaultMaven.java:391)         在org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:272)         在org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138)         在org.apache.maven.cli.MavenCli.main(MavenCli.java:362)         在org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:60)         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)         at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)         at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)         at java.lang.reflect.Method.invoke(Unknown Source)         在org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)         在org.codehaus.classworlds.Launcher.launch(Launcher.java:255)         在org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)         在org.codehaus.classworlds.Launcher.main(Launcher.java:375) [INFO] ----------------------------------------------- ------------------------- [INFO]总时间:&lt; 1秒 [INFO]完成时间:2月18日星期四18:19:44 CET 2010 [INFO]最终记忆:1M / 2M [INFO] ----------------------------------------------- -------------------------

6 个答案:

答案 0 :(得分: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>

要添加spring依赖项,我建议使用以下内容:

<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>

有关Spring工件的完整列表,请查看Obtaining Spring 3 Artifacts with Maven并获取所需内容。

更新:仅供参考,有许多repository search engines可以帮助您找到工件。如果您不习惯Maven,这可能会有所帮助。另请注意,您可以获得一些IDE支持(Idea,Eclipse,NetBeans,我认为它们都提供了存储库搜索功能)。实际上,在你的情况下,我建议使用SpringSource Tools Suite(STS),这是Eclipse的集成版本(捆绑一些插件用于Spring项目开发,包括Maven支持)。 STS是一个完全集成的环境,非常接近您在.NET世界IMO中可以获得的内容。你会喜欢的。

答案 1 :(得分: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

如果存储库中存在特定版本的spring,这应该有用,我目前使用2.5.5

<强>更新

  

你知道,我不想部署我的JAR   文件只有pom.xml,但所有的   我需要的JAR   申请运行。

然后你需要一个叫做程序集插件的东西,它会为你创建带有依赖项的.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>

答案 2 :(得分:2)

从春季开始,不再有一个超级大型车。你应该选择你需要的部件。你至少需要:

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

答案 3 :(得分: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>

答案 4 :(得分: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 ???

答案 5 :(得分:0)

我找到了一个很好的pom.xml示例,它对我来说很好。

这是链接Spring 3 Hibernate 4 Pom.xml