Je voudrais mettre JDK tools.jar en tant que dépendance de compilation. J’ai trouvé des exemples qui indiquent l’utilisation de la propriété systemPath comme suit:
com.sun tools system ${java.home}/../lib/tools.jar
Le problème est que le chemin n’est pas correct pour Mac Os X (toutefois, il est correct pour Windows et Linux). Pour cela, le chemin correct est $ {java.home} /../ Classes / classes.jar .
Je cherche un moyen de définir une propriété Maven telle que si le système est détecté sous Mac Os X, la valeur est définie sur $ {java.home} /../ Classes / classes.jar , sinon elle est définie sur $ {java.home} /../ lib / tools.jar (comme c’est possible avec ANT). Est-ce que quelqu’un a une idée?
C’est à quoi servent les profils, extrayez le chemin d’access à une propriété, configurez les profils pour Windows, OSX, etc., et définissez les valeurs de propriété de manière appropriée.
Voici la page de documentation traitant des profils pour les systèmes d’exploitation: Modèle de parameters locaux Maven
Cela devrait finir par ressembler à ceci:
windows_profile Windows ${java.home}/../lib/tools.jar osx_profile mac ${java.home}/../Classes/classes.jar
Merci de m’avoir présenté les profils maven.
J’ai utilisé le profil mentionné ci-dessus et en activant un profil basé sur la présence du fichier souhaité:
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
J’ai posté cette réponse pour mettre en évidence une erreur dans le post précédent: la section des propriétés ne peut être utilisée que dans la section d’activation afin d’activer un profil basé sur l’existence de la propriété spécifiée. Pour définir une propriété, la section des propriétés doit être utilisée comme ci-dessus.
Salut, je sais que vous êtes tous intelligents, mais cela m’a fait quelques jours pour comprendre que la réponse n’est pas complète – le profil et la dépendance sont nécessaires. J’espère que personne ne perdra de temps là-dessus. S’il vous plaît voir mon code complet ci-dessous:
osx_profile false mac ${java.home}/../Classes/classes.jar com.sun tools 1.6.0 system ${toolsjar}
D’une certaine manière, l’éclipse dans Windows ne parvient pas à capter {java.home}. J’ai donc dû définir JAVA_HOME au lieu de java.home. JAVA_HOME a été défini dans Run-> Run Configurations-> Environment. Cela a fonctionné pour moi avec JDK standard (pas 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}
Le commentaire d’ Edward est correct.
Vous avez besoin du profil ET vous avez besoin de la dependency
dehors du bloc de profiles
. Le profil détermine simplement quelle valeur ${toolsjar}
va recevoir.
jdk.tools jdk.tools jdk1.8.0 system ${toolsjar}
ma solution:
$JAVA_HOME/lib
$JAVA_HOME/..
nommé lib où la cible sera $JAVA_HOME/lib