JDK tools.jar en tant que dépendance maven

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:

  1. mettre le fichier tools.jar de Sun dans le répertoire $JAVA_HOME/lib
  2. créer un lien symbolique dans le $JAVA_HOME/.. nommé lib où la cible sera $JAVA_HOME/lib