2010-02-18 30 views
7

Estoy haciendo la transición de .NET a JAVA y tengo que iniciar el proyecto JAVA con Spring 3.0.0. e Hibernate.Descarga de dependencias de Spring 3.0.0 con Maven

¿Puede alguien explicarme step_by_step cómo descargar las dependencias primaverales con Maven? Pasé todo el día sin ningún éxito.

PS. Tengo Java 1.5.06 y ya descargué Spring (sin dependencias) e instalé Maven.

edición:

c0mrade:

Creo que para la primavera 3.0.0. se consideran dependencias opcionales por lo que deben ser incluidos por separado cada dependencia, esto es sólo una suposición No estoy seguro de esto, si Pascal o alguien con más experiencia confirma mi declaración entonces su verdad, así Hasta ahora he trabajó con la primavera 2.5.5

Sí ... Definitivamente son opcionales, así que esto es lo que hice. Simplemente copio/pegué las dependencias de hibernación del archivo spring-orm pom al archivo myproject pom, lo que significa que ahora tengo las dependencias de primavera e hibernación en mi archivo pom definidas juntas. Luego ejecuté "mvn install" en myproject y luego copié a mano todos los contenedores de hibernación y de primavera a la carpeta lib de mi proyecto.

Así que ahora tengo un proyecto de Java con Spring e hibernate. :)

Estoy aprendiendo Java y este es solo mi segundo día, así que por favor díganme si hice algo horriblemente mal.

actualización:

rlovtang:

Al utilizar experto no lo hace de forma manual descargar cualquier dependencias (como primavera), no se realiza la copia mano ningún frascos para sus proyectos lib carpeta. Todo esto se soluciona automáticamente por maven cuando ejecuta 'mvn install'. Cómo empaqueta su aplicación, ¿es war?

Entiendo eso. Y está claro para mí que Maven administra automáticamente classpath para dependencias en mi repositorio local para que mi proyecto pueda funcionar normalmente en mi máquina local. Y también me consta que tiene la opción de empaquetar los archivos jar de sus dependencias en su WAR o EAR, pero ¿qué sucede si deseo empacar mi aplicación como JAR junto con todas las dependencias JAR dentro de la carpeta de salida (destino)? Verá, no quiero implementar mi archivo JAR con pom.xml solamente, pero todos los archivos JAR que se necesitan para ejecutar mi aplicación.


Todavía no funciona:

esta es mi 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> 

Cuando golpeo "mvn instalar" Recibo esta excepción:

[INFO] Análisis en busca de proyectos ... [INFO] -------- -------------------------------------------------- -------------- [ERROR] ERROR FATAL [INFO] -------------------------- ---------------------------------------------- [INFO] null [INFO] --------------------------------------------- --------------------------- [INFO] Trazar java.lang.NullPointerException en org.apache.maven.artifact.versioning.DefaultArtifactVersion.parseVersion (DefaultArtifactVersion.jav a: 136). en org.apache.maven.artifact.versioning.DefaultArtifactVersion (DefaultArtifactVersion.java:47) en org.apache.maven.artifact.versioning.VersionRange.createFromVersion (VersionRange.java:219) en org.apache.maven.project.artifact.ProjectArtifactFactory.create (ProjectArtifactFactory.java:37) en org.apache.maven.project.DefaultMavenProjectBuilder.processProjectLogic (DefaultMavenProjectBuilder. java: 1017) en org.apache.maven.project.DefaultMavenProjectBuilder.buildInternal (DefaultMavenProjectBuilder.java:8 80) en org.apache.maven.project.DefaultMavenProjectBuilder.buildFromSourceFileInternal (DefaultMavenProject Builder.java:508) en org.apache.maven.project.DefaultMavenProjectBuilder.build (DefaultMavenProjectBuilder.java:200) en org.apache.maven.DefaultMaven.getProject (DefaultMaven.java:604) en org.apache.maven.DefaultMaven.collectProjects (DefaultMaven) .java: 487) en org.apache.maven.DefaultMaven.getProjects (DefaultMaven.java:391) en org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:272) en org.apache.maven.De faultMaven.execute (DefaultMaven.java:138) en org.apache.maven.cli.MavenCli.main (MavenCli.java:362) en org.apache.maven.cli.compat.CompatibleMain.main (CompatibleMain.java: 60) en sun.reflect.NativeMethodAccessorImpl.invoke0 (nativo Método) en sun.reflect.NativeMethodAccessorImpl.invoke (origen desconocido) en sun.reflect.DelegatingMethodAccessorImpl.invoke (origen desconocido) en java.lang.reflect.Method .invoke (Fuente desconocida) en org.codehaus.classworlds.Launcher.launchEnhanced (Launcher.java:315) en org.codehaus.classworlds.Launcher.launch (Launcher.java:255) en org.codehaus.classworlds. Launcher.mainWithExitCode (Launcher.java:430) en org.codehaus.classworlds.Launche r.main (Launcher.java:375) [INFO] ------------------------------------ ------------------------------------ [INFO] Tiempo total: < 1 segundo [INFO] Finalizado en: jue 18 feb 11:19:44 CET 2010 [INFO] Memoria final: 1M/2M [INFO] ----------------------- -------------------------------------------------

+1

También recomiendo que lea experta libro electrónico gratuito por ejemplo, me experto básicamente aprendido en pocos días, por supuesto, los conceptos básicos .. pero todavía pregunto de vez en cuando o dos preguntas sobre maven – ant

+1

@Goran pokusaj 3.0.0.RELEASE como Kees de Kooter sugirió – ant

+0

Todavía lo mismo ... Probé "3.0.0.RELEASE", y también probé "spring-context" para el artifactId pero todavía me da esto mismo error. – Goran

Respuesta

12

En realidad, su POM está equivocado, le faltan piezas esenciales. Se necesita al menos algo como esto (este es un POM mínima):

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

Para agregar una dependencia primavera, a continuación, sugiero utilizar el siguiente:

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

Para una lista completa de los artefactos de la primavera , eche un vistazo a Obtaining Spring 3 Artifacts with Maven y recoja lo que necesita.

Actualización: Solo FYI, hay numerosos repository search engines que pueden ayudarlo a encontrar artefactos. Esto podría ser útil si no estás acostumbrado a Maven. También tenga en cuenta que puede obtener soporte IDE para esto (Idea, Eclipse, NetBeans, creo que todos ofrecen una función de búsqueda de repositorio). En realidad, en su caso sugiero usar SpringSource Tools Suite (STS) que es una versión integrada de Eclipse (que incluye algunos complementos para el desarrollo de proyectos de Spring, incluido el soporte de Maven). STS es un entorno totalmente integrado, muy parecido a lo que se puede obtener en .NET world IMO. Te gustará.

+0

Pego todo eso en mi pom.xml y sigo recibiendo NullPointerException ... Personas, por favor, tengan en cuenta que solo tengo 1 día de experiencia en JAVA. – Goran

+1

@Pascal: es nuevo en Java, Maven & Spring. Tal vez agregue la propiedad $ {org.springframework.version} en su ejemplo, o reemplácela con la versión actual. Está lo suficientemente confundido como lo está ...;) – Tim

+2

@Tim He hecho eso (y como el enlace que brindo está usando esta propiedad, prefiero usarlo, lo cual es bueno de todos modos si necesitas muchos de sus artefactos). –

2

Simplemente ponga esto en su pom.xml

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

Hay varios repositorios de Maven donde a partir de que se pueden descargar bibliotecas, aquí es una

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

Esto debe realizarse si no es que la versión particular de la primavera en el repositorio, yo uso actualmente 2.5.5

ACTUALIZACIÓN

Verá, no quiero implementar mi archivo JAR solo con pom.xml, pero todos los JAR que se necesitan para ejecutar mi aplicación .

Luego necesita algo llamado plugin de ensamblaje, que hará que .jar con dependencias para usted, recuerde el libro que proporcioné, busque la palabra clave ensamblador para obtener más información. Pero aquí es cómo lo hago con el montaje:

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

mvn clean install assembly:assembly 

Eso es si quieres .jar a continuación, es necesario que especifique <packaging>jar</packaging>

+1

La versión debería ser "3.0.0.RELEASE" –

+1

@Kees de Kooteras Dije que utilizo 2.5.5 él puede buscar en el repositorio el número de versión exacto. – ant

+0

c0mrade dijo: "él puede buscarlo en el repositorio el número de versión exacta "... ¿Cómo, dónde? – Goran

2

A partir de la primavera 3 ya no es un gran superjar. Deberías elegir las partes que necesitas en su lugar. Necesita al menos:

<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

Tengo prisa, así que no puedo agregar muchas explicaciones y acabo de cortar y pegar algo que ya he escrito. Perdón por eso. Tiene que cambiar las informaciones contenidas en la etiqueta groupId artifactId y empaque (que podría ser una "guerra" para un archivo war en lugar de un archivo jar o "pom" para un proyecto de varios módulos). Debería eliminar todas las dependencias que le son innecesarias. – gicappa

0

Ok. Tengo que esto funcione:

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

Y veo varios frascos están descargando, pero todavía tienen ninguna pista sobre donde se descargaron a .

También veo varios frascos de primavera (por ejemplo spring-jdbc-3.0.0.RELEASE.jar) que se están descargando, pero ¿dónde está Hibernate? ¿No debería descargarse Hibernate también?

+1

@Goran se están descargando a su repositorio local, en la carpeta .m2 de su carpeta raíz de usuario, así como alguien mencionó que el resorte ya no es un gran archivo jar, debe elegir qué dependencias necesita, luego incluirlas en su pom para ser descargado a su repositorio local, le sugiero que eche un vistazo a este libro no es muy largo, pero útil, simplemente vaya a través de algunos capítulos y se dará cuenta de qué se trata solo después de leer el segundo capítulo que prometo .. aquí está http://www.sonatype.com/books/mvnex-book/reference/public-book.html – ant

+1

@Goran también en lugar de agregar nuevas respuestas, es una práctica común aquí en SO para editar sus publicaciones sin agregar nuevas respuestas a menos que desee responder a su propia pregunta que se recomienda – ant

+0

@ c0mrade: OK ... Lo haré a partir de ahora ... – Goran

Cuestiones relacionadas