Aggiungi una dipendenza in Maven


134

Come posso prendere un file jar che ho e aggiungerlo al sistema di dipendenza in maven 2? Sarò il manutentore di questa dipendenza e il mio codice ha bisogno di questo vaso nel percorso di classe in modo che venga compilato.

Risposte:


139

Dovrai farlo in due passaggi:

1. Dai al tuo JAR un ID gruppo, un artefatto e una versione e aggiungilo al tuo repository.

Se non si dispone di un repository interno e si sta solo tentando di aggiungere il JAR al repository locale, è possibile installarlo come segue, utilizzando qualsiasi gruppo arbitrario ID / artefatto:

mvn install:install-file -DgroupId=com.stackoverflow... -DartifactId=yourartifactid... -Dversion=1.0 -Dpackaging=jar -Dfile=/path/to/jarfile

Puoi anche distribuirlo nel tuo repository interno se ne hai uno e vuoi renderlo disponibile ad altri sviluppatori della tua organizzazione. Uso solo l'interfaccia basata sul Web del mio repository per aggiungere artefatti, ma dovresti essere in grado di ottenere lo stesso risultato usando mvn deploy:deploy-file ....

2. Aggiornare i progetti dipendenti per fare riferimento a questo JAR.

Quindi aggiornare la dipendenza in pom.xml dei progetti che utilizzano JAR aggiungendo quanto segue all'elemento:

<dependencies>
    ...
    <dependency>
        <groupId>com.stackoverflow...</groupId>
        <artifactId>artifactId...</artifactId>
        <version>1.0</version>
    </dependency>
    ...
</dependencies>

3
Puoi aggiungere ulteriori dettagli sulla distribuzione? Abbiamo un repository interno e desidero distribuire il mio file jar installato locale in quel repository in modo che anche altri sviluppatori e il nostro server di build ottengano il jar.
Kieveli,

Questa risposta dovrebbe ottenere tutti i Mi piace! L'ho usato per aggiungere con successo dipendenze per i miei progetti maven sia su Google App Engine che su Heroku.
Leo C Han,

93

È inoltre possibile specificare una dipendenza non in un repository maven. Potrebbe essere utile quando non esiste un repository centrale maven per il tuo team o se hai un server CI

    <dependency>
        <groupId>com.stackoverflow</groupId>
        <artifactId>commons-utils</artifactId>
        <version>1.3</version>
        <scope>system</scope>
        <systemPath>${basedir}/lib/commons-utils.jar</systemPath>
    </dependency>

4
Posso dipendere da un altro file pom anziché da un vaso?
Jayen,

45

In realtà, indagando su questo, penso che tutte queste risposte siano errate. La tua domanda è fuorviante a causa del nostro livello di comprensione maven. E dico il nostro perché mi sto solo presentando maven.

In Eclipse, quando si desidera aggiungere un file jar al progetto, normalmente si scarica il barattolo manualmente e quindi lo si rilascia nella directory lib . Con Maven, non lo fai in questo modo. Ecco cosa fai:

  • Vai a mvnrepository
  • Cerca la libreria che desideri aggiungere
  • Copia la dependencydichiarazione nel tuopom.xml
  • ricostruire via mvn

Ora mavensi collegherà e scaricherà jarinsieme all'elenco delle dipendenze e risolverà automaticamente eventuali dipendenze aggiuntive che jarpotrebbero aver avuto. Quindi, se jarè necessario anche il log comune, anche quello verrà scaricato.


5
Sto usando Spring Tool Suite (costruito su Eclipse). Dopo i passaggi 1 e 2 nella soluzione precedente: 1. Aprire pom.xml nell'editor STS, fare clic sulla scheda "Dipendenze" in basso 2. Fare clic su "Aggiungi" nel gruppo Dipendenze 3. Copia / incolla le informazioni sulla dipendenza della scheda "Maven" dalla finestra del browser ( groupId, artefactId, versione) nei campi corrispondenti nel popup "Seleziona dipendenza" in STS 4. Fare clic su OK 5. Salva pom.xml Una volta salvata, la mia directory di maven sul disco rigido e l'impostazione di dipendenza di maven in STS vengono aggiornate in pochi secondi. È possibile modificare direttamente il file .xml, ma l'utilizzo dello strumento può aiutare a evitare problemi di formato xml.
Chris R,

2
Questo è davvero il modo preferito di fare le cose, ma ci sono situazioni in cui non puoi farlo (ad es. Jar proprietario non su mvnrepository). In tal caso avrai bisogno di un modo per aggiungerlo "manualmente", nel qual caso un'altra risposta avrebbe la soluzione.
Thunderforge,

È anche possibile che la domanda posta fosse meno di una domanda per principianti. L'ho messo per le persone che cercano di fare qualcosa senza la frase corretta che deriva dal tempo trascorso a lavorare con Maven. (Come ero allora)
Kieveli,

KISS Grazie, ho letto che questo è l'equivalente di C # Nuget in Java, ma stavo cercando di capire quale pulsante fare clic o cmd da eseguire. Non esattamente 1: 1 ma fa il lavoro.
Terrance

Come ricostruire il progetto in Maven in IntelleJ?
Irfan Nasim,

14

Farei questo:

  1. aggiungi la dipendenza che vuoi nel tuo pom:

    <dependency>
            <groupId>com.stackoverflow...</groupId>
            <artifactId>artifactId...</artifactId>
            <version>1.0</version>
    </dependency>

  2. eseguirlo mvn installproverà a scaricare il jar e fallirà. Sul processo, ti darà il comando completo di installazione del vaso con il messaggio di errore. Copia quel comando ed eseguilo! facile eh ?!


3

Presumo che tu stia chiedendo come spingere una dipendenza verso un "noto repository" e non semplicemente chiedendo come aggiornare il tuo POM.

Se sì, allora questo è quello che vuoi leggere.

E per chiunque cerchi di configurare un server di repository interno, guarda qui (metà del problema con l'utilizzo di Maven 2 sta trovando i documenti)


Vorrei mantenere una dipendenza anch'io. Questa è una biblioteca interna.
Milhous,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.