2009-11-18 11 views
19

Nel mio progetto di base utilizzo la dipendenza di JasperReports che ha una dichiarazione di repository inesistente nel suo pom. Quando eseguo ogni commando Maven, c'è una dipendenza che cerca la raccolta di comuni in questo repository di Jasper, quindi ho bisogno di aspettare il timeout.
Questo è il mio progetto di base e viene utilizzato come dipendenza nei miei altri progetti, quindi di nuovo ho bisogno di aspettare il timeout.
C'è un modo per spostare questo repository nella lista nera o sovrascrivere queste impostazioni?Come disabilitare manualmente/lista nera repository Maven

Note:
1.Why si cerca nei repository Jasper, forse bacause delle gamme

<dependency> 
    <groupId>commons-collections</groupId> 
    <artifactId>commons-collections</artifactId> 
    <version>[2.1,)</version> 
    <scope>compile</scope> 
</dependency> 

2.My idea per risolvere questo problema è quello di cambiare il diaspro pom e utilizzare repository proxy, ma cercando di un'altra opzione.
3. Uso la versione 1.3.3 di jasperreports e mi piacerebbe non cambiarla.

risposta

8

C'è un modo per spostare questo repository nella lista nera o sovrascrivere queste impostazioni?

Per quanto ne so, questo non è possibile.

Perché è la ricerca in repository Jasper, forse a causa delle gamme

Sì, penso gamme sono "responsabili" qui di questo comportamento. Senza intervalli, Maven non avrebbe dovuto controllare i repository remoti per una versione più recente di quella disponibile nel repository locale.

La mia idea di risolvere questo problema è quella di cambiare jasper pom e utilizzare il repository proxy, ma sto cercando un'altra opzione.

Fissare jasper pom e utilizzare un repository proxy sarebbe ovviamente la soluzione ideale ma questo non è sempre possibile. C'è forse una soluzione alternativa però. Hai provato a escludere le dipendenze transitive di jasperreports che hanno intervalli e a fornirle tu stesso (con la versione fissa) nel tuo pom. Qualcosa di simile a questo:

<dependencies> 
    <dependency> 
    <groupId>jasperreports</groupId> 
    <artifactId>jasperreports</artifactId> 
    <version>1.3.3</version> 
    <!-- Remove Transitive dependencies drawn by Jasper Report that we don't want --> 
    <exclusions> 
     <exclusion> 
     <groupId>commons-collections</groupId> 
     <artifactId>commons-collections</artifactId> 
     </exclusion> 
     ... 
    </exclusions> 
    </dependency> 
    <dependency> 
    <groupId>commons-collections</groupId> 
    <artifactId>commons-collections</artifactId> 
    <version>2.1</version><!-- Or whatever version, as long as it's fixed --> 
    <scope>compile</scope> 
    </dependency> 
    .... 
<dependencies> 

In questo modo, Maven non sono tenuti a controllare il repository inesistente e questo dovrebbe evitare di dover attendere il timeout. Ci proverei.

Io uso la versione 1.3.3 di jasperreports e mi piacerebbe non cambiarlo.

Nessun problema.

+0

@Pascal. Grazie aiuta. Le gamme in Maven sono malvagie :) – cetnar

+0

@cetnar Sono contento che sia stato utile. E sono d'accordo, gli intervalli non sono buoni, aggiungono più problemi che soluzioni. –

+0

La risposta di Fred sotto che può essere disabilitata sembra corretta, l'ho appena usata. Forse una nuova funzionalità? – brad

11

È possibile eseguire l'override di un repository utilizzando una dichiarazione mirrorOf in settings.xml. Anche se non è quello per cui è tipicamente previsto, l'impostazione ad esempio di mirrorOf sui report jasper repoid e puntarla su Central (repo1.maven.org) lo farebbe sparire.

Un'opzione migliore è quella di utilizzare un gestore di repository come Nexus e quindi è possibile controllare quali proxy e risorse utente sono effettivamente offerti.

+1

Questo mi ha davvero aiutato, grazie. –

+0

Questa dovrebbe essere una soluzione accettata !!! –

+0

Ho disabile java.net aggiungendo settings.xml ( /conf/settings.xml o ~/.m2/settings.xml) ' ... disabled-jave.net https: //jcenter.bintray.com/ http://download.java.net/maven/2 ' – raisercostin

16

Non sarebbe il seguente Maven dicono di ignorare un repository specifica:

<repository> 
     <id>repo1.maven</id> 
     <url>http://repo1.maven.org</url> 
     <releases> 
      <enabled>false</enabled> 
     </releases> 
     <snapshots> 
      <enabled>false</enabled> 
     </snapshots> 
    </repository> 
+0

L'approccio di cui sopra è un buon modo per blacklist un repo Maven che è in pom.xml di qualche dipendenza transitiva e causa problemi (come il temuto reindirizzamento 301 che si ottiene da java.net), dove i componenti esistono già in Maven central . – kkrugler

+0

Questa cosa mi è successa: una dipendenza aveva fatto riferimento a un repository di anteprima tecnico che era stato ora sostituito da un repository GA. Usato questo per bloccarlo e tutto andava bene nel mondo, ma beh ... è difficile da rintracciare! – JoshC13

0

soluzione da Fred ha lavorato molto per me. Ho dovuto abbinare l'ID del repository dal file pom della dipendenza transitoria incriminata per far funzionare questa soluzione.

Problemi correlati