Je voudrais mettre JDK tools.jar comme dépendance à la compilation. J'ai trouvé quelques exemples qui indiquent d'utiliser la propriété systemPath comme ceci:
<dependency>
<groupId>com.Sun</groupId>
<artifactId>tools</artifactId>
<scope>system</scope>
<systemPath>${Java.home}/../lib/tools.jar</systemPath>
</dependency>
Le problème est que le chemin n'est pas correct pour Mac Os X (mais 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é comme Mac OS X, la valeur est définie sur $ {Java.home} /../ Classes/classes.jar , sinon est défini sur $ {Java.home} /../ lib/tools.jar (comme il est possible de le faire avec ANT). Est-ce que quelqu'un a une idée?
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é:
<profiles>
<profile>
<id>default-profile</id>
<activation>
<activeByDefault>true</activeByDefault>
<file>
<exists>${Java.home}/../lib/tools.jar</exists>
</file>
</activation>
<properties>
<toolsjar>${Java.home}/../lib/tools.jar</toolsjar>
</properties>
</profile>
<profile>
<id>mac-profile</id>
<activation>
<activeByDefault>false</activeByDefault>
<file>
<exists>${Java.home}/../Classes/classes.jar</exists>
</file>
</activation>
<properties>
<toolsjar>${Java.home}/../Classes/classes.jar</toolsjar>
</properties>
</profile>
</profiles>
J'ai posté cette réponse pour mettre en évidence une erreur dans le post précédent: la section de propriété 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 properties doit être utilisée comme ci-dessus.
C'est à quoi servent les profils, extrayez le chemin d'accès à une propriété, configurez les profils pour Windows, OSX, etc. et définissez les valeurs de la propriété de manière appropriée.
Voici la page de documentation qui traite des profils pour les systèmes d'exploitation: Modèle de paramètres locaux Maven
Cela devrait finir par ressembler à quelque chose comme ça:
<profiles>
<profile>
<id>windows_profile</id>
<activation>
<os>
<family>Windows</family>
</os>
</activation>
<properties>
<toolsjar>${Java.home}/../lib/tools.jar</toolsjar>
</properties>
</profile>
<profile>
<id>osx_profile</id>
<activation>
<os>
<family>mac</family>
</os>
</activation>
<properties>
<toolsjar>${Java.home}/../Classes/classes.jar</toolsjar>
</properties>
</profile>
</profiles>
Salut, je sais que vous êtes tous intelligents, mais cela m'a pris 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 plus de temps là-dessus. S'il vous plaît voir mon code complet ci-dessous:
<profiles>
<profile>
<id>osx_profile</id>
<activation>
<activeByDefault>false</activeByDefault>
<os>
<family>mac</family>
</os>
</activation>
<properties>
<toolsjar>${Java.home}/../Classes/classes.jar</toolsjar>
</properties>
<dependencies>
<dependency>
<groupId>com.Sun</groupId>
<artifactId>tools</artifactId>
<version>1.6.0</version>
<scope>system</scope>
<systemPath>${toolsjar}</systemPath>
</dependency>
</dependencies>
</profile>
</profiles>
D'une manière ou d'une autre, Eclipse dans Windows ne parvient pas à récupérer {Java.home}. Je devais donc définir Java_HOME au lieu de Java.home. Java_HOME a été défini dans Exécuter-> Exécuter les configurations-> Environnement. Cela a fonctionné pour moi avec JDK standard (pas Apple JDK).
<profiles>
<profile>
<id>windows-profile</id>
<activation>
<activeByDefault>true</activeByDefault>
<file>
<exists>${Java_HOME}/lib/tools.jar</exists>
</file>
</activation>
<properties>
<toolsjar>${Java_HOME}/lib/tools.jar</toolsjar>
</properties>
</profile>
<profile>
<id>mac-profile</id>
<activation>
<activeByDefault>false</activeByDefault>
<file>
<exists>${Java.home}/../lib/tools.jar</exists>
</file>
</activation>
<properties>
<toolsjar>${Java.home}/../lib/tools.jar</toolsjar>
</properties>
</profile>
</profiles>
<dependencies>
<dependency>
<groupId>jdk.tools</groupId>
<artifactId>jdk.tools</artifactId>
<version>jdk1.8.0</version>
<scope>system</scope>
<systemPath>${toolsjar}</systemPath>
</dependency>
</dependencies>
Le commentaire de Edward est correct.
Vous avez besoin du profil ET vous avez besoin de dependency
en dehors du bloc profiles
. Le profil détermine uniquement la valeur que ${toolsjar}
va obtenir.
<dependencies>
<dependency>
<groupId>jdk.tools</groupId>
<artifactId>jdk.tools</artifactId>
<version>jdk1.8.0</version>
<scope>system</scope>
<systemPath>${toolsjar}</systemPath>
</dependency>
</dependencies>
J'ai trouvé une solution dans Q: Déclarer la dépendance de maven sur tools.jar pour pouvoir travailler sur JDK 9
Comme la magie maven actuelle est assez élaborée, surprenante pour les nouveaux arrivants et sujette à des améliorations futures, il est préférable de ne pas la copier-coller. Par conséquent, ce module existe pour que vous n'ayez pas à connaître ou à vous soucier des détails. ~~ https://github.com/olivergondza/maven-jdk-tools-wrapper
<dependency>
<groupId>com.github.olivergondza</groupId>
<artifactId>maven-jdk-tools-wrapper</artifactId>
<version>0.1</version>
</dependency>
Instructions appropriées pour les débutants
Ajoutez d’abord ce profil au fichier Pom.xml au-dessus de la balise ou ailleurs.
<profiles>
<profile>
<id>default-profile</id>
<activation>
<activeByDefault>true</activeByDefault>
<file>
<exists>${Java.home}/../lib/tools.jar</exists>
</file>
</activation>
<properties>
<toolsjar>${Java.home}/../lib/tools.jar</toolsjar>
</properties>
</profile>
<profile>
<id>mac-profile</id>
<activation>
<activeByDefault>false</activeByDefault>
<file>
<exists>${Java.home}/../Classes/classes.jar</exists>
</file>
</activation>
<properties>
<toolsjar>${Java.home}/../Classes/classes.jar</toolsjar>
</properties>
</profile>
</profiles>
puis corrigez le chemin JRE
Aller à :
Windows> Preferecnes> JRE installés
sélectionnez JAL intégré et double-cliquez dessus ou dans le menu de droite, cliquez sur Editer, puis assurez-vous que le chemin JRE Home est dans JDK et ressemble à ceci:
C:\Program Files\Java\jdk1.8.0_181\jre
si vous aviez installé JRE séparément, Eclipse aurait choisi JRE autonome comme:
C:\Program Files\Java\jre1.8.0_181 \
alors changez-le en JRE qui vient avec JDK:
C:\Program Files\Java\jdk1.8.0_181\jre