Maven e' un ottimo sistema di compilazione/configurazione di un progetto Java, e la scelta di usare degli artifacts che vengono scaricati e configurati automaticamente e' veramente eccellente. Mai mi sarei aspettato di ottenere un errore piuttosto criptico da un progetto molto semplice che richiedeva la presenza di log4j. Eseguendo il processo di compilazione ottenevo l'errore:
Ebbene l'errore di cui sopra e' generato dall'impossibilita' di scaricare alcuni jar dal sito di java.net, ma a parte questo, essendo il mio progetto molto semplice, tali jar non erano nemmeno richiesti! Il problema e' nelle dipendenze di Log4J che dalla versione 1.2.15 hanno delle dipendenze sui suddetti package. Ma se tali package non vengono usati e' possibile escluderli dal processo di compilazione/download modificando il file pom come segue:
Con questa modifica la compilazione di progetti che richiedono le funzionalita' "standard" di Log4J avverra' senza problemi.
[ERROR] Failed to execute goal on project XYZ: Could not resolve dependencies for project XYZ:XYZ:jar:0.2-STABLE: The following artifacts could not be resolved: com.sun.jdmk:jmxtools:jar:1.2.1, com.sun.jmx:jmxri:jar:1.2.1: Could not transfer artifact com.sun.jdmk:jmxtools:jar:1.2.1 from/to java.net (https://maven-repository.dev.java.net/nonav/repository): No connector available to access repository java.net (https://maven-repository.dev.java.net/nonav/repository) of type legacy using the available factories WagonRepositoryConnectorFactory
Ebbene l'errore di cui sopra e' generato dall'impossibilita' di scaricare alcuni jar dal sito di java.net, ma a parte questo, essendo il mio progetto molto semplice, tali jar non erano nemmeno richiesti! Il problema e' nelle dipendenze di Log4J che dalla versione 1.2.15 hanno delle dipendenze sui suddetti package. Ma se tali package non vengono usati e' possibile escluderli dal processo di compilazione/download modificando il file pom come segue:
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.15</version>
<scope>compile</scope>
<exclusions>
<exclusion>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
</exclusion>
<exclusion>
<groupId>javax.jms</groupId>
<artifactId>jms</artifactId>
</exclusion>
<exclusion>
<groupId>com.sun.jdmk</groupId>
<artifactId>jmxtools</artifactId>
</exclusion>
<exclusion>
<groupId>com.sun.jmx</groupId>
<artifactId>jmxri</artifactId>
</exclusion>
</exclusions>
</dependency>
Con questa modifica la compilazione di progetti che richiedono le funzionalita' "standard" di Log4J avverra' senza problemi.
Nessun commento:
Posta un commento