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:

[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.

The article Maven & Log4J: dependency error has been posted by Luca Ferrari on June 15, 2011