2011-01-21 11 views
8

Estoy usando Eclipse como IDE y Maven fuera de él para mantener todas las dependencias actualizadas y actualizar el proyecto Eclipse como tal. En Eclipse normalmente especifico la biblioteca del sistema JRE como un entorno de ejecución para cualquier proyecto Java, generalmente "JavaSE-1.6".Eclipse + Maven: forzar entorno de ejecución "JavaSE-1.6" en lugar de JDK fijo

En el pom.xml utilizo las siguientes líneas:

 <plugin> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>2.3.2</version> 
      <configuration> 
       <source>1.6</source> 
       <target>1.6</target> 
      </configuration> 
     </plugin> 
     <plugin> 
      <artifactId>maven-eclipse-plugin</artifactId> 
      <version>2.8</version> 
      <configuration> 
       <projectNameTemplate>[groupId].[artifactId]</projectNameTemplate> 
       <downloadJavadocs>true</downloadJavadocs> 
       <wtpversion>2.0</wtpversion> 
      </configuration> 
     </plugin> 

Esto parece dejar Maven recoger un JDK 1.6 a juego. Asigna sus bibliotecas del sistema al classpath del proyecto. Sin embargo, utiliza jdk1.6.20 directamente en lugar de JavaSE-1.6.

¿Hay alguna manera de hacer que Maven use JavaSE-1.6 en su lugar?


EDIT: Aquí está el archivo por lotes que utilizo para ejecutar Maven:

SET JAVA_HOME=C:\Programme\java\jdk1.6.0_20 
SET MAVEN_HOME=C:\Programme\apache-maven-2.2.1 
SET MAVEN_OPTS=-Xmx512m -XX:MaxPermSize=128m 
SET PATH=%JAVA_HOME%\bin;%MAVEN_HOME%\bin;%PATH% 

SET EXTRA_MVN_OPTS=-Dmaven.test.skip=true 

CD /D "%~dp0" 
cmd /c mvn %EXTRA_MVN_OPTS% eclipse:clean eclipse:eclipse 
cmd /c mvn %EXTRA_MVN_OPTS% clean install 
+0

añadí el archivo por lotes para Maven y los pom.xml líneas para el 'experto en Eclipse-Plugin' – sjngm

Respuesta

10

Puede hacerlo estableciendo un contenedor classpath.

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-eclipse-plugin</artifactId> 
    <version>2.8</version> 
    <configuration> 
     <classpathContainers> 
      <classpathContainer> 
    org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6 
      </classpathContainer> 
     </classpathContainers> 
    </configuration> 
</plugin> 

Referencia:

+0

¡Esto suena prometedor! Te dejaré saber si funcionó. – sjngm

+1

Sé que sí, una antigua compañía cliente mía lo usó durante años. Sin embargo, el problema es que la propiedad está marcada como interna y, por lo tanto, está sujeta a cambios –

+0

Sí, funciona. Si deja de funcionar, abriré otra pregunta;) _Siento por la demora, pero estaba enfermo_ – sjngm

2

Id a Ventana> Preferencias> JRE de Java> instalados> Entornos de Ejecución

Seleccionar JavaSE-1.6, haga clic en la casilla a la derecha que debe indicar "concordancia perfecta"

luego use "actualizar configuración de proyecto" en el menú de maven.

+0

Ya hace. Aparte de eso, no tengo permitido usar el menú de Maven ya que ocasionalmente destruye la configuración del proyecto. – sjngm

+0

¿Qué versión de la extensión maven estás usando? Las versiones más recientes han sido MUY buenas sobre eso. Si está asignando los archivos .project y .classpath al control de versiones, probablemente no sea una buena idea ya que eclipse + maven puede actualizar/reconfigurar aquellos basados ​​en dependencias y complementos. –

+0

Acabo de ver su edición y me gustaría ver la recomendación de @Sean Patric Floyd. –

0

dado que está utilizando maven y eclipse, tal vez usted debe utilizar M2Eclipse plugin. El proyecto Maven (construido por el experto mediante el establecimiento de JAVA_HOME=C:\Program Files\Java\jdk1.6.0_23) importados en Eclipse, aparece con JRE System Library como JavaSE-1.6

+0

Sería bueno saber por qué generalmente preferiría M2Eclipse, además de" me funciona "para esta pregunta. –

Cuestiones relacionadas