pom plugin exclude example windows maven java java-home

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"