Cum de a adăuga locale fișierele jar la un proiect Maven?

Cum adaug locale fișierele jar (nu fac încă parte din Maven repository) direct în proiectul meu's biblioteca de surse?

Comentarii la întrebare (3)

Puteți adăuga locale dependențe direct (după cum sa menționat în https://stackoverflow.com/questions/4491199/build-maven-project-with-propriatery-libraries-included/4491343#4491343) astfel:



    com.sample
    sample
    1.0
    system
Comentarii (12)
Soluția

Montați vasul în local Maven depozit, după cum urmează:

mvn install:install-file \
   -Dfile=<path-to-file> \
   -DgroupId= \
   -DartifactId= \
   -Dversion= \
   -Dpackaging= \
   -DgeneratePom=true

În cazul în care fiecare se referă la:

<calea-de-fișier>: calea către fișierul pentru a încărca e.g → c:\kaptcha-2.3.jar

<grup-id>: grupul care dosarul ar trebui să fie înregistrate sub e.g → com.google.codul

<artefact id->: artefact nume pentru fișier e.g → kaptcha

<versiunea>: versiunea fișierului e.g → 2.3

<ambalare>: ambalajul de fișierul de exemplu → "jar"

Referință

Comentarii (9)

În primul rând, aș dori să dau credit pentru acest răspuns la un anonim Stack Overflow utilizator - sunt destul de sigur că am'am văzut un răspuns similar aici înainte, dar acum nu pot găsi.

Cea mai bună opțiune pentru a avea locală fișiere JAR ca o dependență este de a crea un local Maven depozit. Astfel de depozit este nimic mai mult decât o buna structura de directoare cu pom fișierele în ea.

Pentru exemplul meu: Am proiectul meu pe ${master_project} locația și subproject1 e pe ${master_project}/${subproject1}.

Apoi am crea un Maven depozit în: ${master_project}/locale-maven-repo.

În pom fișier în subproject1 situat la ${master_project}/${subproject1}/pom.xml, depozitul trebuie să fie specificate care ar lua calea de fișier ca un parametru URL:



        local-maven-repo
        file:///${project.parent.basedir}/local-maven-repo

Dependența poate fi specificat ca pentru orice alt depozit. Acest lucru face pom depozit independent. De exemplu, odată dorit BORCAN este disponibil în Maven central, trebuie doar să-l ștergeți de pe repo locală și va fi scos din default repo.


        org.apache.felix
        org.apache.felix.servicebinder
        0.9.0-SNAPSHOT

Ultimul, dar nu cel mai puțin lucru să faceți este să adăugați fișierul JAR la depozit local folosind -DlocalRepositoryPath comuta astfel:

mvn org.apache.maven.plugins:maven-install-plugin:2.5.2:install-file  \
    -Dfile=/some/path/on/my/local/filesystem/felix/servicebinder/target/org.apache.felix.servicebinder-0.9.0-SNAPSHOT.jar \
    -DgroupId=org.apache.felix -DartifactId=org.apache.felix.servicebinder \
    -Dversion=0.9.0-SNAPSHOT -Dpackaging=jar \
    -DlocalRepositoryPath=${master_project}/local-maven-repo

Odată ce fișierul JAR este instalat, Maven repo poate fi angajat la un depozit de cod, și întregul set-up este independent de sistem. (Exemplu de lucru în GitHub).

Sunt de acord că având în Borcane angajat la codul sursă repo nu este o practică bună, dar în viața reală, rapid și murdar soluții sunt, uneori, mai bine decât un plin cu sufletul la gură Nexus repo pentru a găzdui un BORCAN pe care le pot publica.

Comentarii (11)

Creați un folder nou, sa's spun `local maven-repo la rădăcina proiect Maven.

Trebuie doar să adăugați un local repo în interiorul tău <proiect> a ta pom.xml:



        local-maven-repo
        file:///${project.basedir}/local-maven-repo

Apoi pentru fiecare externe borcan vrei pentru a instala, du-te la rădăcina proiectului si executa:

mvn deploy:deploy-file -DgroupId=[GROUP] -DartifactId=[ARTIFACT] -Dversion=[VERS] -Durl=file:./local-maven-repo/ -DrepositoryId=local-maven-repo -DupdateReleaseInfo=true -Dfile=[FILE_PATH]
Comentarii (8)

Am'd ca astfel de soluție utilizat maven-instalare-plug in pom fișier:


            org.apache.maven.plugins
            maven-install-plugin
            2.5.2


                    initialize

                        install-file


                        lib/yourJar.jar
                        com.somegroup.id
                        artefact-id
                        x.y.z
                        jar



În acest caz, puteți efectua mvn inițializa și borcan vor fi instalate în local maven repo. Acum acest borcan este disponibil în orice maven pas pe acest aparat (nu uitați să includeți această dependență și orice alte maven dependență în pom cu<dependență></dependență> tag). Este de asemenea posibil de a lega borcan instala nu inițializa pas, dar orice alt pas vă place.

Comentarii (5)


    group id name
    artifact name
    version number
    system
Comentarii (3)

Da , poti avea dar nu e idee buna.

În loc de a instala toate aceste borcane pentru maven repos

De Asemenea, A Se Vedea

Comentarii (0)

O modalitate este de a încărca propria ta Maven depozit manager (cum ar fi Nexus). L's de bune practici pentru a avea un depozit manager, oricum.

Un alt mod frumos de am'am vazut recent este de a include Maven a Instala Plugin-ul în a construi ciclul de viață: Vă declar în POM pentru a instala fișierele la depozit local. L's un pic, dar deasupra capului mic și nici un manual pas implicate.

http://maven.apache.org/plugins/maven-install-plugin/install-file-mojo.html

Comentarii (1)

Într-adevăr rapid și murdar mod este de a indica un fișier local:



      sample  
       com.sample  
       1.0 
      system
Comentarii (3)

Adăugați propriile locale BORCAN în POM fișier și de a folosi că, în maven construi.

mvn install:install-file -Dfile=path-to-jar -DgroupId=owngroupid -DartifactId=ownartifactid -Dversion=ownversion -Dpackaging=jar

De exemplu:

mvn install:install-file -Dfile=path-to-jar -DgroupId=com.decompiler -DartifactId=jd-core-java -Dversion=1.2 -Dpackaging=jar

Apoi adăugați-l la POM așa:

Comentarii (2)

Desigur, puteți adăuga borcane la acel folder. Dar poate că nu este ceea ce vrei pentru a atinge...

Dacă aveți nevoie de aceste borcane pentru compilare, verificați această întrebare legate de: https://stackoverflow.com/questions/364114/can-i-add-jars-to-maven-2-build-classpath-without-installing-them/

De asemenea, înainte de oricine sugerează că, NU utilizați domeniul de aplicare a sistemului.

Comentarii (0)

linie de comandă :

mvn install:install-file -Dfile=c:\kaptcha-{version}.jar -DgroupId=com.google.code
-DartifactId=kaptcha -Dversion={version} -Dpackaging=jar
Comentarii (0)

Un alt caz interesant este atunci când doriți să aveți în proiect privat maven borcane. Poate doriți pentru a menține capacitățile de Maven pentru a rezolva dependențele tranzitive. Soluția este destul de ușor.

  1. Creați un folder libs în proiectul dumneavoastră
  2. Adăugați următoarele linii în pom.xml fișier
${pom.basedir}/libs/ local-maven-repository file://${locală.repository.folder} adevărat adevărat
  1. Deschide .m2/repository dosar și copia structura de director de proiect pe care doriți să o importați în libs folder.

E. g. să presupunem că doriți să importați dependență


    com.mycompany.myproject
    myproject
    1.2.3

Doar du-te la .m2/repository și veți vedea următorul folder

com/mycompany/myproject/1.2.3

Copia totul în libs folder (din nou, inclusiv folderele de sub .m2/repository) și ați terminat.

Comentarii (0)

Cred că o soluție mai bună pentru această problemă este de a utiliza maven-instala-plugin pentru a instala automat fișierele la instalare. Acest lucru este cum l-am înființat pentru proiectul meu.

În primul rând, adăugați calea (în cazul în care vă magazin local .borcane) ca o proprietate.


    /path/to/jar

Apoi, sub "plugin" adauga un plugin pentru a instala borcane atunci când compilarea.


    org.apache.maven.plugins
    maven-install-plugin
    2.5.2


            1
            initialize

                install-file


                com.local.jar 
                appengine-api
                1.0
                jar
                ${local.sdk}/lib/impl/appengine-api.jar



            appengine-api-stubs
            initialize

                install-file


                com.local.jar
                appengine-api-stubs
                1.0
                jar
                ${local.sdk}/lib/impl/appengine-api-stubs.jar



În cele din urmă, în dependențe, puteți adăuga borcane


    com.local.jar
    appengine-api
    1.0



    com.local.jar
    appengine-api-stubs
    1.0
    test

Prin înființarea astfel de proiect, proiectul va continua să construiască chiar și atunci când vă duceți-l la un alt calculator (având în vedere că are toate fișierele jar în calea specificată de proprietate la nivel local.sdk`).

Pentru groupId` utilizați un nume unic, doar pentru a vă asigura că nu există conflicte.

Acum când mvn instala " sau " mvn test locale borcane vor fi adăugate automat.

Comentarii (0)

Modul preferat ar fi să vă creați propriul depozit la distanță.

A se vedea aici pentru detalii cu privire la cum să o facă. Avea o privire de la '* Încărcarea de la un Depozit la Distanță**' secțiune.

Comentarii (0)

De asemenea, să ia o privire la...

compile

Maven Dependențe. Acest lucru este implicit, dar am'am găsit în unele cazuri în mod explicit stabilirea domeniului de aplicare, de asemenea, Maven pentru a găsi bibliotecile locale în depozit local.

Comentarii (0)

Vreau să împărtășesc un cod în cazul în care puteți încărca un folder plin de borcane. L's util atunci când un furnizor nu't au un registru public și aveți nevoie pentru a adăuga o mulțime de biblioteci manual. Am'am decis să construiască o .bat în loc de a apela direct la maven, deoarece ar putea fi din erori de Memorie. Acesta a fost pregătit pentru un mediu windows, dar este ușor să se adapteze la sistemul de OPERARE linux:

import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;
import java.util.jar.Attributes;
import java.util.jar.JarFile;
import java.util.jar.Manifest;

public class CreateMavenRepoApp {

    private static final String OCB_PLUGIN_FOLDER = "C://your_folder_with_jars";

    public static void main(String[] args) throws IOException {

    File directory = new File();
    //get all the files from a directory
    PrintWriter writer = new PrintWriter("update_repo_maven.bat", "UTF-8");
    writer.println("rem "+ new Date());  
    File[] fList = directory.listFiles();
    for (File file : fList){
        if (file.isFile()){               
        String absolutePath = file.getAbsolutePath() ;
        Manifest  m = new JarFile(absolutePath).getManifest();
        Attributes attributes = m.getMainAttributes();
        String symbolicName = attributes.getValue("Bundle-SymbolicName");

        if(symbolicName!=null &&symbolicName.contains("com.yourCompany.yourProject")) {
            String[] parts =symbolicName.split("\\.");
            String artifactId = parts[parts.length-1];
            String groupId = symbolicName.substring(0,symbolicName.length()-artifactId.length()-1);
            String version = attributes.getValue("Bundle-Version");
            String mavenLine= "call mvn org.apache.maven.plugins:maven-install-plugin:2.5.1:install-file -Dfile="+ absolutePath+" -DgroupId="+ groupId+" -DartifactId="+ artifactId+" -Dversion="+ version+" -Dpackaging=jar ";
            writer.println(mavenLine);          
        }

        }
    }
    writer.close();
    }

}

După ce executați această principal din orice IDE, executați update_repo_maven.bat.

Comentarii (2)

Aceasta este o scurtă sintaxa pentru versiuni mai noi:

mvn install:install-file -Dfile=<path-to-file>

Acesta funcționează atunci când vasul a fost construit de către Apache Maven - cel mai frecvent caz. Apoi se'll conține o pom.xml într-un subfolder de META-INF, care va fi citit în mod implicit.

Sursa: http://maven.apache.org/guides/mini/guide-3rd-party-jars-local.html

Comentarii (0)

Rețineți că aceasta NU este neapărat o idee bună să utilizați un local repo. Dacă acest proiect este împărtășită cu alții, atunci toată lumea va avea probleme și întrebări când nu - 't de lucru, și la borcan câștigat't fi disponibil chiar și în sursa sistem de control!

Deși comună repo este cel mai bun răspuns, dacă nu puteți face acest lucru pentru un motiv oarecare, atunci încorporarea borcan este mai bun decât un repo locală. Locale-doar repo conținutul poate provoca o mulțime de probleme, mai ales de-a lungul timpului.

Comentarii (3)

Pe depozit local puteți instala jar prin emiterea de comenzi

 mvn install:install-file -Dfile=<path-to-file> -DgroupId= \
-DartifactId= -Dversion= -Dpackaging=

Urmați acest util link pentru a face același lucru din mkyoung's site-ul web. Puteți verifica, de asemenea, maven ghid pentru aceleași

Comentarii (0)