Giải pháp tốt nhất tôi có thể tìm thấy bao gồm các bước sau:
- Tạo một nhánh được gọi
mvn-repo
để lưu trữ các tạo tác maven của bạn.
- Sử dụng github site-maven-plugin để đẩy các tạo phẩm của bạn lên github.
- Cấu hình maven để sử dụng điều khiển từ xa của bạn
mvn-repo
như một kho lưu trữ maven.
Có một số lợi ích khi sử dụng phương pháp này:
- Các tạo phẩm của Maven được giữ tách biệt với nguồn của bạn trong một nhánh riêng được gọi
mvn-repo
, giống như các trang github được giữ trong một nhánh riêng gọi là gh-pages
(nếu bạn sử dụng các trang github)
- Không giống như một số giải pháp được đề xuất khác, nó không xung đột với bạn
gh-pages
nếu bạn đang sử dụng chúng.
- Liên kết một cách tự nhiên với mục tiêu triển khai nên không có lệnh maven mới để học. Chỉ cần sử dụng
mvn deploy
như bình thường
Cách điển hình mà bạn triển khai các tạo phẩm cho một repo maven từ xa là sử dụng mvn deploy
, vì vậy hãy vá vào cơ chế đó cho giải pháp này.
Đầu tiên, hãy bảo maven triển khai các tạo phẩm đến một vị trí dàn dựng tạm thời trong thư mục đích của bạn. Thêm phần này vào 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>
Bây giờ hãy thử chạy mvn clean deploy
. Bạn sẽ thấy rằng nó đã triển khai kho lưu trữ maven của bạn target/mvn-repo
. Bước tiếp theo là làm cho nó tải thư mục đó lên GitHub.
Thêm thông tin xác thực của bạn để ~/.m2/settings.xml
github site-maven-plugin
có thể đẩy lên 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>
(Như đã nói, hãy chắc chắn chmod 700 settings.xml
để đảm bảo không ai có thể đọc mật khẩu của bạn trong file. Nếu ai đó biết làm thế nào để làm cho trang web-maven-Plugin nhắc cho một mật khẩu thay vì đòi hỏi phải có nó trong một tập tin cấu hình, cho tôi biết.)
Sau đó, nói với GitHub site-maven-plugin
về máy chủ mới mà bạn vừa cấu hình bằng cách thêm phần sau vào pom của bạn:
<properties>
<!-- github server corresponds to entry in ~/.m2/settings.xml -->
<github.global.server>github</github.global.server>
</properties>
Cuối cùng, định cấu hình site-maven-plugin
để tải lên từ repo dàn dựng tạm thời của bạn đến mvn-repo
chi nhánh của bạn trên 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>
Các mvn-repo
chi nhánh không cần phải tồn tại, nó sẽ được tạo ra cho bạn.
Bây giờ chạy mvn clean deploy
lại. Bạn sẽ thấy maven-integration-plugin "tải" các tệp lên kho lưu trữ cục bộ của bạn trong thư mục đích, sau đó site-maven-plugin cam kết các tệp đó và đẩy chúng vào máy chủ.
[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] ------------------------------------------------------------------------
Truy cập github.com trong trình duyệt của bạn, chọn mvn-repo
chi nhánh và xác minh rằng tất cả các nhị phân của bạn hiện đang ở đó.
Xin chúc mừng!
Bây giờ bạn có thể triển khai các tạo tác maven của mình cho repo công khai của một người nghèo chỉ bằng cách chạy mvn clean deploy
.
Còn một bước nữa bạn sẽ muốn thực hiện, đó là định cấu hình bất kỳ pom nào phụ thuộc vào pom của bạn để biết kho lưu trữ của bạn ở đâu. Thêm đoạn mã sau vào bất kỳ dự án nào phụ thuộc vào dự án của bạn:
<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>
Bây giờ, bất kỳ dự án nào yêu cầu tệp jar của bạn sẽ tự động tải xuống từ kho lưu trữ github maven của bạn.
Chỉnh sửa: để tránh sự cố được đề cập trong các nhận xét ('Lỗi khi tạo cam kết: Yêu cầu không hợp lệ. Đối với' property / name ', nil không phải là một chuỗi.'), Hãy đảm bảo bạn nêu tên trong hồ sơ của mình trên github.