Me gustaría poner JDK tools.jar como comstackción de dependencia. Encontré algunos ejemplos que indican usar la propiedad systemPath de la siguiente manera:
com.sun tools system ${java.home}/../lib/tools.jar
El problema es que la ruta no es correcta para Mac Os X (sin embargo, es correcta para Windows y Linux). Para ello, la ruta correcta es $ {java.home} /../ Classes / classes.jar .
Estoy buscando una forma de definir una propiedad maven de modo que si el sistema se detecta como Mac OS X, el valor se establece en $ {java.home} /../ Classes / classes.jar , de lo contrario se establece en $ {java.home} /../ lib / tools.jar (como es posible hacer con ANT). ¿Alguien tiene una idea?
Para eso sirven los perfiles, extraer la ruta a una propiedad, configurar los perfiles para Windows, OSX, etc., y definir los valores de propiedad de forma adecuada.
Aquí está la página del documento que analiza los perfiles de los sistemas operativos: Maven Local Settings Model
Debería parecer algo como esto:
windows_profile Windows ${java.home}/../lib/tools.jar osx_profile mac ${java.home}/../Classes/classes.jar
Gracias por presentarme los perfiles de maven.
He utilizado el perfil como se menciona arriba y activando un perfil basado en la presencia del archivo deseado:
default-profile true ${java.home}/../lib/tools.jar ${java.home}/../lib/tools.jar mac-profile false ${java.home}/../Classes/classes.jar ${java.home}/../Classes/classes.jar
Publiqué esta respuesta para resaltar un error en la publicación anterior: la sección de propiedad solo se puede usar en la sección de activación para activar un perfil en función de la existencia de la propiedad especificada. Para definir una propiedad, la sección de propiedades debe usarse como arriba.
Hola, sé que ustedes son inteligentes, pero me llevó un par de días darme cuenta de que la respuesta no está completa: tanto el perfil como la dependencia son necesarios. Espero que nadie pierda el tiempo en esto de nuevo. Por favor vea mi código completo a continuación:
osx_profile false mac ${java.home}/../Classes/classes.jar com.sun tools 1.6.0 system ${toolsjar}
De alguna manera, el eclipse en windows falla al recoger {java.home}. Entonces, tuve que configurar JAVA_HOME en lugar de java.home. JAVA_HOME se configuró en Ejecutar-> Configuraciones de ejecución-> Entorno. Esto funcionó para mí con JDK estándar (no Apple JDK).
windows-profile true ${JAVA_HOME}/lib/tools.jar ${JAVA_HOME}/lib/tools.jar mac-profile false ${java.home}/../lib/tools.jar ${java.home}/../lib/tools.jar jdk.tools jdk.tools jdk1.8.0 system ${toolsjar}
El comentario de Edward es correcto.
Necesita el perfil Y necesita la dependency
fuera del bloque de profiles
. El perfil solo determina qué valor va a obtener ${toolsjar}
.
jdk.tools jdk.tools jdk1.8.0 system ${toolsjar}
mi solución:
$JAVA_HOME/lib
$JAVA_HOME/..
named lib donde target será $JAVA_HOME/lib