windows - exclude - maven-resources-plugin example
Casa_hogar en Maven (1)
No, no está mal. Está apuntando al JRE utilizado por su JDK, que es lo que se supone que debe hacer. Si imprime JAVA_HOME
fuera de maven, debería imprimir correctamente:
C:/>echo %JAVA_HOME%
C:/Program Files/Java/jdk1.7.0_07
C:/>mvn -version
Apache Maven 3.0.4 (r1232337; 2012-01-17 10:44:56+0200)
Maven home: C:/APPS/apache-maven-3.0.4/bin/..
Java version: 1.7.0_07, vendor: Oracle Corporation
Java home: C:/Program Files/Java/jdk1.7.0_07/jre
Default locale: en_US, platform encoding: Cp1252
OS name: "windows 7", version: "6.1", arch: "amd64", family: "windows"
C:/>
Así que, básicamente, JAVA_HOME necesita apuntar a una instalación JDK (maven necesita las herramientas.jar) pero maven realmente usa el jre dentro del JDK para ejecutarse.
Al usar mvn -version
, maven usa la propiedad java.home interna de java, como se puede ver desde el código fuente :
version.append( "Java home: " + System.getProperty( "java.home", "<unknown java home>" ) ).append( LS );
Esta propiedad no es lo mismo que la configuración del entorno JAVA_HOME, por lo que podría engañarte. En realidad, es una propiedad dinámica que le muestra qué JRE está ejecutando su código. Si compila y ejecuta una clase de prueba Test.java imprimiendo lo mismo, puede ver que si su JAVA_HOME apunta a un JDK, el valor de java.home no es igual a su JAVA_HOME. Esto es esperado.
Citando this :
¿Cuál es la diferencia entre JAVA_HOME y java.home?
JAVA_HOME es el directorio de instalación de JDK, por ejemplo, C: / jdk5. Está destinado a configurarse como una variable de entorno y se hace referencia en los archivos por lotes de Windows o en los scripts de Unix. Siempre lo tengo en mi Panel de control de Windows y archivos .tcsh, junto con otras variables de entorno comunes. Algunas aplicaciones Java usan el nombre jdk.home para este propósito, que creo que es un nombre mejor. Pero JAVA_HOME se ha utilizado desde el principio y ahora es una convención.
java.home es el directorio de instalación de JRE, por ejemplo, C: / jdk5 / jre, o C: / Archivos de programa / Java / jre1.5.0_06. A diferencia de JAVA_HOME, nunca he visto java.home como una variable de entorno. java.home es una propiedad incorporada del sistema Java, cuyo valor es el directorio de instalación de JRE. Dado que todas las propiedades del sistema Java también están expuestas como propiedades de compilación Ant, también puede usar $ {java.home} en archivos de compilación.
¿Sería jre.home un nombre mejor? Quizás, pero no creo que Sun lo cambie.
Puedes ver que maven usa JAVA_HOME en mvn.bat:
:endInit
SET MAVEN_JAVA_EXE="%JAVA_HOME%/bin/java.exe"
..
%MAVEN_JAVA_EXE% %MAVEN_OPTS% -classpath %CLASSWORLDS_JAR% ..
Y si quiere asegurarse, puede comentar la declaración "@echo off" en mvn.bat, para que pueda ver que se está utilizando.
TL; DR: en función de la información que ha proporcionado, su configuración es correcta, no es necesario cambiar nada.
Editar: gracias a este hilo, también hubo un problema acerca de que esto era confuso , lo que resultó en un cambio de salida para la versión 3.5.4 de Maven.
Cuando ejecuté mvn -version
, noté que java_home
apunta a ...jdk/jre
(como se muestra a continuación). ¿Es eso incorrecto? ¿No se supone que apunta a .../jdk.xyz
(sin el /jre
)? Si es así, ¿cómo lo reinicio? (En global %java_home%
puntos al directorio jdk
)
C:/Users/Owner>mvn -version
Apache Maven 2.2.1 (r801777; 2009-08-06 15:16:01-0400)
Java version: 1.7.0_17
Java home: C:/Program Files/Java/jdk1.7.0_17/jre
Default locale: en_US, platform encoding: Cp1252
OS name: "windows 7" version: "6.1" arch: "amd64" Family: "windows"