Pertanyaan Bagaimana cara menambahkan file jar lokal ke proyek Maven?


Bagaimana cara menambahkan file jar lokal (belum menjadi bagian dari repositori Maven) langsung di sumber pustaka proyek saya?


792
2018-02-10 10:03


asal


Jawaban:


Instal JAR ke repositori Maven lokal Anda sebagai berikut:

mvn install:install-file
   -Dfile=<path-to-file>
   -DgroupId=<group-id>
   -DartifactId=<artifact-id>
   -Dversion=<version>
   -Dpackaging=<packaging>
   -DgeneratePom=true

Dimana masing-masing mengacu pada:

  <path-to-file>: path ke file untuk memuat misalnya -> c: \ kaptcha-2.3.jar

<group-id>: grup yang file harus terdaftar di bawah misalnya -> com.google.code

<artifact-id>: nama artefak untuk file tersebut misalnya -> kaptcha

<version>: versi file misalnya -> 2.3

<packaging>: pengemasan file mis. -> jar

Referensi


429
2018-02-10 10:08



Anda dapat menambahkan dependensi lokal secara langsung (seperti yang disebutkan di membangun proyek maven dengan perpustakaan propriater yang disertakan) seperti ini:

<dependency>
    <groupId>com.sample</groupId>
    <artifactId>sample</artifactId>
    <version>1.0</version>
    <scope>system</scope>
    <systemPath>${project.basedir}/src/main/resources/yourJar.jar</systemPath>
</dependency>

1010
2018-03-10 13:02



Pertama saya ingin memberikan kredit untuk jawaban ini untuk pengguna stackoverflow anonim - Saya cukup yakin saya telah melihat jawaban yang sama di sini sebelumnya - tetapi sekarang saya tidak dapat menemukannya.

Pilihan terbaik untuk memiliki file jar lokal sebagai dependensi adalah membuat repositori maven lokal. Repo seperti itu tidak lain adalah struktur direktori yang tepat dengan file pom di dalamnya.

Pada contoh saya: Saya memiliki proyek master ${master_project} lokasi dan subroyek1 aktif ${master_project}/${subproject1}

kemudian saya membuat repositori mvn di: ${master_project}/local-maven-repo

Dalam file pom di subproject1 berada ${master_project}/${subproject1}/pom.xml repositori perlu ditentukan yang akan mengambil jalur file sebagai parameter url:

<repositories>
    <repository>
        <id>local-maven-repo</id>
        <url>file:///${project.parent.basedir}/local-maven-repo</url>
    </repository>
</repositories>

Ketergantungan dapat ditentukan seperti untuk repositori lainnya. Ini menjadikan pom repositori Anda independen. Misalnya, satu kali guci yang diinginkan tersedia di pusat maven, Anda hanya perlu menghapusnya dari repo lokal dan akan ditarik dari repo default.

    <dependency>
        <groupId>org.apache.felix</groupId>
        <artifactId>org.apache.felix.servicebinder</artifactId>
        <version>0.9.0-SNAPSHOT</version>
    </dependency>

Hal terakhir yang harus dilakukan adalah menambahkan file jar ke repositori lokal menggunakan switch -DlocalRepositoryPath seperti di sini:

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

File jar onece diinstal seperti repo mvn dapat berkomitmen untuk kode repositori dan seluruh set up adalah sistem independen. (contoh kerja di github)

Saya setuju bahwa memiliki JAR yang berkomitmen untuk repo kode sumber bukanlah praktik yang baik tetapi dalam kehidupan nyata, solusi cepat dan kotor terkadang lebih baik daripada repo nexus penuh sesak untuk menampung satu toples yang tidak dapat Anda publikasikan.


82
2018-02-27 10:17



Buat folder baru, katakanlah local-maven-repo di akar proyek Maven Anda.

Cukup tambahkan repo lokal di dalam Anda <project> Anda pom.xml:

<repositories>
    <repository>
        <id>local-maven-repo</id>
        <url>file:///${project.basedir}/local-maven-repo</url>
    </repository>
</repositories>

Kemudian untuk setiap guci eksternal yang ingin Anda pasang, pergilah ke akar proyek Anda dan laksanakan:

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

75
2018-04-13 14:55



<dependency>
    <groupId>group id name</groupId>
    <artifactId>artifact name</artifactId>
    <version>version number</version>
    <scope>system</scope>
    <systemPath>jar location</systemPath>
</dependency>

24
2018-01-09 08:48



Saya ingin solusi seperti itu - gunakan maven-install-plugin dalam file pom:

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-install-plugin</artifactId>
            <version>2.5.2</version>
            <executions>
                <execution>
                    <phase>initialize</phase>
                    <goals>
                        <goal>install-file</goal>
                    </goals>
                    <configuration>
                        <file>lib/yourJar.jar</file>
                        <groupId>com.somegroup.id</groupId>
                        <artifactId>artefact-id</artifactId>
                        <version>x.y.z</version>
                        <packaging>jar</packaging>
                    </configuration>
                </execution>
            </executions>
        </plugin>

Dalam hal ini Anda dapat melakukan mvn initialize dan guci akan dipasang di repo maven lokal. Sekarang toples ini tersedia selama langkah maven pada mesin ini (jangan lupa untuk memasukkan ketergantungan ini seperti ketergantungan maven lainnya di pom dengan <dependency></dependency> menandai). Juga dimungkinkan untuk mengikat jar untuk tidak menginstal initialize langkah, tetapi langkah lain yang Anda suka.


20
2017-07-12 21:58



Ya, Anda dapat memiliki tetapi itu bukan ide yang bagus.

Sebagai gantinya pasang semua toples ini ke repositen maven

Juga Lihat


14
2018-02-10 10:06



Salah satunya adalah dengan mengunggahnya ke manajer repositori Maven Anda sendiri (seperti Nexus). Ini adalah praktik yang baik untuk memiliki pengelola repositori sendiri.

Cara bagus lain yang baru-baru ini saya lihat adalah memasukkan Plugin Instal Maven ke dalam siklus hidup build Anda: Anda menyatakan di POM untuk menginstal file ke repositori lokal. Ini adalah overhead kecil tapi kecil dan tidak ada langkah manual yang terlibat.

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


9
2018-02-10 10:39



Tambahkan JAR lokal Anda di file POM dan gunakan itu di maven build.

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

Sebagai contoh:

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

Kemudian tambahkan ke POM seperti ini:

enter image description here


8
2017-07-05 06:22