Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    331

    [Java + maven] sovrascrittura di un jar

    Salve a tutti.
    In un progetto Java che utilizza maven per compilare e creare il war finale avrei bisogno di sostituire una delle librerie caricate automaticamente da maven con una custom, è possibile?
    Praticamente dovrei fare le seguenti operazioni:

    1) Scaricare la libreria originale direttamente da maven
    2) Sostituire il jar caricato da maven con il mio custom
    3) Creare il war finale con il mio jar custom

    Nel mio progetto non ho la dependency relativa al file che devo sostituire (è presente in una delle librerie che includo tramite dependency) quindi non posso commentarla e caricare il file manualmente

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Premesso che Maven l'ho usato pochissimissimo, ma... se la tua situazione è questa:

    Progetto -> dependency Libreria A
    Libreria A -> dependency JAR1, JAR2, JAR3

    Supponiamo che tu debba sostituire JAR3 con JAR3-B

    Semplicemente crea una nuova libreria, chiamiamola Libreria B con le seguenti dependecies:

    Libreria B -> dependency JAR1, JAR2, JAR3-B

    e sostituisci la dependency del Progetto con Libreria B.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    331
    Grazie del suggerimento ma il fatto è che io non posso operare sulla Libreria A, ho una libreria di una terza parte che ha varie dependencies annidate tra cui Libreria A (che peraltro è una dependency di opensaml quindi non credo la si possa modificare)

  4. #4
    E' una cosa che si può fare tranquillamente, riprendendo l'esempio di Lele; se tu hai un dipendenza :
    Libreria A -> dependency JAR1, JAR2, JAR3
    e che tu voglia sostituire la dipendenza JAR3 allora nel tuo pom dovrai avere un cosa del genere
    codice:
    
    
    codice:
    <dependency>
          <groupId>sample.ProjectA</groupId>
          <artifactId>LIBRERIA-A</artifactId>
          <version>1.0</version>
          <scope>compile</scope>
          <exclusions>
            <exclusion>  <!-- declare the exclusion here -->
              <groupId>sample.ProjectB</groupId>
              <artifactId>JAR3</artifactId>
            </exclusion>
          </exclusions> 
     </dependency>


    Cioè in poche parole in questo modo dici a maven di escludere il JAR 3 dall'albero delle dipendenza di quella dipendenza (scusa il gioco di parole).
    A questo punto non ti resta altro di aggiungere un'ulteriore dipendeza al tuo jar modificato e il gioco è fatto.

    Ciao

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.