Solusi terbaik yang dapat saya temukan terdiri dari langkah-langkah ini:
- Buat cabang yang dipanggil
mvn-repo
untuk meng-host artefak pakar Anda.
- Gunakan situs github -maven-plugin untuk mendorong artefak Anda ke github.
- Konfigurasikan pakar untuk menggunakan remote Anda
mvn-repo
sebagai repositori maven.
Ada beberapa manfaat menggunakan pendekatan ini:
- Artefak Maven disimpan terpisah dari sumber Anda di cabang terpisah yang disebut
mvn-repo
, seperti halaman github disimpan dalam cabang terpisah yang disebut gh-pages
(jika Anda menggunakan halaman github)
- Tidak seperti beberapa solusi lain yang diusulkan, itu tidak bertentangan dengan Anda
gh-pages
jika Anda menggunakannya.
- Ikatan secara alami dengan target penyebaran sehingga tidak ada perintah pakar baru untuk dipelajari. Cukup gunakan
mvn deploy
seperti biasa
Cara khas Anda menggunakan artefak ke repo pakar jarak jauh adalah dengan menggunakan mvn deploy
, jadi mari kita tambal ke dalam mekanisme untuk solusi ini.
Pertama, beri tahu pakar untuk menyebarkan artefak ke lokasi pementasan sementara di dalam direktori target Anda. Tambahkan ini ke Anda pom.xml
:
<distributionManagement>
<repository>
<id>internal.repo</id>
<name>Temporary Staging Repository</name>
<url>file://${project.build.directory}/mvn-repo</url>
</repository>
</distributionManagement>
<plugins>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.1</version>
<configuration>
<altDeploymentRepository>internal.repo::default::file://${project.build.directory}/mvn-repo</altDeploymentRepository>
</configuration>
</plugin>
</plugins>
Sekarang coba jalankan mvn clean deploy
. Anda akan melihat bahwa itu dikerahkan repositori maven Anda untuk target/mvn-repo
. Langkah selanjutnya adalah membuatnya mengunggah direktori itu ke GitHub.
Tambahkan informasi autentikasi Anda ke ~/.m2/settings.xml
sehingga github site-maven-plugin
dapat mendorong ke GitHub:
<!-- NOTE: MAKE SURE THAT settings.xml IS NOT WORLD READABLE! -->
<settings>
<servers>
<server>
<id>github</id>
<username>YOUR-USERNAME</username>
<password>YOUR-PASSWORD</password>
</server>
</servers>
</settings>
(Sebagaimana dicatat, pastikan untuk chmod 700 settings.xml
memastikan tidak ada yang bisa membaca kata sandi Anda di file. Jika seseorang tahu cara membuat situs-maven-plugin meminta kata sandi alih-alih memerlukannya dalam file konfigurasi, beri tahu saya.)
Kemudian beri tahu GitHub site-maven-plugin
tentang server baru yang baru saja Anda konfigurasikan dengan menambahkan yang berikut ke pom Anda:
<properties>
<!-- github server corresponds to entry in ~/.m2/settings.xml -->
<github.global.server>github</github.global.server>
</properties>
Terakhir, konfigurasikan site-maven-plugin
untuk mengunggah dari repo sementara Anda ke mvn-repo
cabang Anda di Github:
<build>
<plugins>
<plugin>
<groupId>com.github.github</groupId>
<artifactId>site-maven-plugin</artifactId>
<version>0.11</version>
<configuration>
<message>Maven artifacts for ${project.version}</message> <!-- git commit message -->
<noJekyll>true</noJekyll> <!-- disable webpage processing -->
<outputDirectory>${project.build.directory}/mvn-repo</outputDirectory> <!-- matches distribution management repository url above -->
<branch>refs/heads/mvn-repo</branch> <!-- remote branch name -->
<includes><include>**/*</include></includes>
<repositoryName>YOUR-REPOSITORY-NAME</repositoryName> <!-- github repo name -->
<repositoryOwner>YOUR-GITHUB-USERNAME</repositoryOwner> <!-- github username -->
</configuration>
<executions>
<!-- run site-maven-plugin's 'site' target as part of the build's normal 'deploy' phase -->
<execution>
<goals>
<goal>site</goal>
</goals>
<phase>deploy</phase>
</execution>
</executions>
</plugin>
</plugins>
</build>
The mvn-repo
cabang tidak perlu ada, itu akan dibuat untuk Anda.
Sekarang jalankan mvn clean deploy
lagi. Anda akan melihat maven-deploy-plugin "mengunggah" file ke repositori pementasan lokal Anda di direktori target, lalu situs-maven-plugin melakukan file-file itu dan mendorongnya ke server.
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building DaoCore 1.3-SNAPSHOT
[INFO] ------------------------------------------------------------------------
...
[INFO] --- maven-deploy-plugin:2.5:deploy (default-deploy) @ greendao ---
Uploaded: file:///Users/mike/Projects/greendao-emmby/DaoCore/target/mvn-repo/com/greendao-orm/greendao/1.3-SNAPSHOT/greendao-1.3-20121223.182256-3.jar (77 KB at 2936.9 KB/sec)
Uploaded: file:///Users/mike/Projects/greendao-emmby/DaoCore/target/mvn-repo/com/greendao-orm/greendao/1.3-SNAPSHOT/greendao-1.3-20121223.182256-3.pom (3 KB at 1402.3 KB/sec)
Uploaded: file:///Users/mike/Projects/greendao-emmby/DaoCore/target/mvn-repo/com/greendao-orm/greendao/1.3-SNAPSHOT/maven-metadata.xml (768 B at 150.0 KB/sec)
Uploaded: file:///Users/mike/Projects/greendao-emmby/DaoCore/target/mvn-repo/com/greendao-orm/greendao/maven-metadata.xml (282 B at 91.8 KB/sec)
[INFO]
[INFO] --- site-maven-plugin:0.7:site (default) @ greendao ---
[INFO] Creating 24 blobs
[INFO] Creating tree with 25 blob entries
[INFO] Creating commit with SHA-1: 0b8444e487a8acf9caabe7ec18a4e9cff4964809
[INFO] Updating reference refs/heads/mvn-repo from ab7afb9a228bf33d9e04db39d178f96a7a225593 to 0b8444e487a8acf9caabe7ec18a4e9cff4964809
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 8.595s
[INFO] Finished at: Sun Dec 23 11:23:03 MST 2012
[INFO] Final Memory: 9M/81M
[INFO] ------------------------------------------------------------------------
Kunjungi github.com di browser Anda, pilih mvn-repo
cabang, dan verifikasi bahwa semua binari Anda ada di sana.
Selamat!
Anda sekarang dapat menggunakan artefak pakar Anda ke repo publik orang miskin hanya dengan berlari mvn clean deploy
.
Ada satu langkah lagi yang ingin Anda ambil, yaitu mengkonfigurasi setiap pom yang bergantung pada pom Anda untuk mengetahui di mana repositori Anda. Tambahkan cuplikan berikut ke pom proyek apa pun yang bergantung pada proyek Anda:
<repositories>
<repository>
<id>YOUR-PROJECT-NAME-mvn-repo</id>
<url>https://github.com/YOUR-USERNAME/YOUR-PROJECT-NAME/raw/mvn-repo/</url>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</repository>
</repositories>
Sekarang setiap proyek yang memerlukan file jar Anda akan secara otomatis mengunduhnya dari repositori github maven Anda.
Sunting: untuk menghindari masalah yang disebutkan dalam komentar ('Kesalahan membuat komit: Permintaan tidak valid. Untuk' properti / nama ', nil bukan string.'), Pastikan Anda menyatakan nama di profil Anda di github.