JDK tools.jar come dipendenza di maven

Vorrei mettere JDK tools.jar come dipendenza di compilazione. Ho trovato alcuni esempi che indicano di utilizzare la proprietà systemPath come la seguente:

 com.sun tools system ${java.home}/../lib/tools.jar  

Il problema è che il percorso non è corretto per Mac Os X (tuttavia è corretto per Windows e Linux). Per questo, il percorso corretto è $ {java.home} /../ Classes / classs.jar .

Sto cercando un modo per definire una proprietà maven tale che se il sistema viene rilevato come Mac Os X, il valore è impostato su $ {java.home} /../ Classes / classs.jar , altrimenti è impostato su $ {java.home} /../ lib / tools.jar (come è ansible fare con ANT). Qualcuno ha un’idea?

Ecco a cosa servono i profili, estrai il percorso di una proprietà, imposta i profili per Windows, OSX, ecc. E definisci i valori delle proprietà in modo appropriato.

Ecco la pagina del documento che illustra i profili per i sistemi operativi: Maven Local Settings Model

Dovrebbe finire con qualcosa del genere:

    windows_profile   Windows    ${java.home}/../lib/tools.jar    osx_profile   mac    ${java.home}/../Classes/classs.jar    

Grazie per avermi presentato i profili di Maven.

Ho usato il profilo come menzionato sopra e triggersndo un profilo basato sulla presenza del file desiderato:

   default-profile  true  ${java.home}/../lib/tools.jar    ${java.home}/../lib/tools.jar    mac-profile  false  ${java.home}/../Classes/classs.jar    ${java.home}/../Classes/classs.jar    

Ho postato questa risposta per evidenziare un errore nel post precedente: la sezione delle proprietà può essere utilizzata solo nella sezione di triggerszione per triggersre un profilo in base all’esistenza della proprietà specificata. Per definire una proprietà, la sezione delle proprietà deve essere utilizzata come sopra.

Ciao, lo so che voi ragazzi siete tutti intelligenti, ma mi hanno causato un paio di giorni per capire che la risposta non è completa – sia il profilo che la dipendenza sono necessari. Spero che nessuno perderà più tempo. Si prega di consultare il mio codice completo qui sotto:

   osx_profile  false  mac    ${java.home}/../Classes/classs.jar    com.sun tools 1.6.0 system ${toolsjar}     

In qualche modo, l’eclipse in Windows non riesce a raccogliere {java.home}. Quindi, ho dovuto impostare JAVA_HOME invece di java.home. JAVA_HOME è stato impostato in Run-> Esegui configurazioni-> Ambiente. Questo ha funzionato per me con JDK standard (non 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}   

Il commento di Edward è corretto.

Hai bisogno del profilo E hai bisogno della dependency al di fuori del blocco dei profiles . Il profilo determina solo quale valore ${toolsjar} otterrà.

   jdk.tools jdk.tools jdk1.8.0 system ${toolsjar}   

la mia soluzione:

  1. metti il ​​tools.jar di Sun su $JAVA_HOME/lib
  2. crea un link simbolico nella $JAVA_HOME/.. named dove il target sarà $JAVA_HOME/lib