2009-08-14 36 views
22

Tôi đang lưu trữ một dự án mã nguồn mở nhỏ trên Google Code và tôi đã được yêu cầu gửi jar tới kho lưu trữ Maven có thể truy cập công khai. Tôi hầu như không có kiến ​​thức thực tế về Maven. cách nào tốt nhất để làm việc này?Kho lưu trữ Maven cho dự án Google Code

Có một số kho lưu trữ trung tâm mà tôi có thể gửi hoặc tôi có thể lưu trữ tài khoản của riêng mình không? Tôi cần phải làm gì khi muốn phát hành một phiên bản mới của lọ?

Tôi đã tìm được Googling và tìm thấy this, trông đẹp và đơn giản, nhưng có vẻ hơi ... trái với tinh thần của Maven, để chuyển các tệp jar cho SVN :).

Ngoài ra, có cách nào để tiếp tục theo dõi số lượt tải xuống, như Google Code không?

EDIT

Tôi đã nhận được một số câu trả lời, một số trong đó có chứa gợi ý về những gì để thêm vào pom.xml tôi. Cảm ơn các bạn! Nhưng rõ ràng tôi quên đề cập đến một điều quan trọng: kịch bản xây dựng của tôi là trong ANT, và để đặt nó thẳng thừng, tôi có ý định giữ nó theo cách đó :). Tôi chỉ muốn làm cho người dùng Maven dễ dàng thêm jar vào dự án của họ.


Các giải pháp tôi đã đi với vào cuối

Cuối cùng, tôi đã sử dụng giải pháp tôi referenced trước đây, nơi tôi chỉ đơn giản là một cam kết repo Maven để SVN. Tôi có kịch bản ANT gọi Maven để thiết lập repo cục bộ, và sau đó gọi SVN để cam kết nó vào Google Code. Đối với những người quan tâm: hãy xem kịch bản xây dựng của tôi here, trong mục tiêu publish-maven.

+0

Những dự án mã nguồn mở là bằng cách này? –

+0

@Bno xem http://code.google.com/p/equalsverifier/ – jqno

+0

thx, trông thật tuyệt! –

Trả lời

24

Có một guide to the central repository rằng có một phần các dự án tải lên có thể giúp. Nếu không có gì khác bạn có thể kiểm tra các quy ước đặt tên và yêu cầu thông tin tối thiểu đối với dự án của bạn.

Sonatype cũng lưu trữ lưu trữ OSS, xem their guide để biết chi tiết.

Cập nhật: Tôi không nói bạn nên thay đổi quy trình xây dựng của mình - nếu Ant hoạt động để bạn gắn bó với nó. Đó là giá trị sau các công ước Maven trong POM của bạn bất kể phương pháp xây dựng của bạn. Khi đưa jar của bạn vào một kho lưu trữ Maven là làm cho nó dễ tiếp cận với người dùng Maven, do đó bạn sẽ cần phải định nghĩa một POM cho tạo phẩm được xuất bản của bạn. Theo các quy ước đặt tên sẽ giúp người dùng của bạn để bạn cũng có thể làm điều đó. Ví dụ, thêm các chi tiết SCM vào pom sẽ (trong số những thứ khác) cho phép người dùng của bạn nhập dự án vào không gian làm việc của họ bằng cách sử dụng tích hợp IDE cho Maven.

Về cơ bản, bạn có 4 lựa chọn:

  1. Thực hiện một Maven tiêu chuẩn xây dựng đối với một kho Maven (đã loại trừ khả năng)
  2. Thiết lập một kho Maven, làm xây dựng của bạn với Ant, và sử dụng Maven để triển khai jar và POM.
  3. Thiết lập một kho Maven, quảng cáo sử dụng là một nhiệm vụ HTTP Ant để công bố các hiện vật
  4. Sử dụng Subversion "kho", và sử dụng các nhiệm vụ SvnAnt công bố hiện vật

Lựa chọn 1

Sử dụng Maven để xây dựng và triển khai các tạo phẩm (xem Maven book và các liên kết ở trên để biết chi tiết).


Lựa chọn 2

Giả sử bạn có một quá trình xây dựng tạo ra jar của bạn, và bạn đã xác định POM, đặt cược tốt nhất của bạn là để công bố nó vào kho Sonatype OSS như trên.

Triển khai một jar hiện có để một kho Maven giữa các ý kiến ​​đơn giản với Maven triển khai mục tiêu triển khai file plugin:

  1. Thiết lập kho của bạn (ví dụ như trên các máy chủ Sonatype bằng cách nâng một Jira request)
  2. xây dựng bình của bạn với Ant.
  3. Nếu bạn đã xác định POM, hãy đặt nó trong cùng thư mục với bình.
  4. Run mục tiêu triển khai-file:

    mvn triển khai: triển khai-file -Durl = http://path/to/your/repository \ -DrepositoryId = some.id \ -Dfile = path-to-bạn-vật-jar \ - DpomFile = path-to-your-pom.xml

Lưu ý rằng mục tiêu triển khai Maven sẽ tự động dịch pom.xml sang [project-name] - [version] .pom. Nếu bạn đang làm một trong hai lựa chọn thay thế khác, bạn sẽ cần phải đảm bảo bạn cam kết POM với tên cuối cùng, tức là [tên dự án] - [phiên bản] .pom. Bạn cũng sẽ cần đảm bảo rằng bạn đã tạo các đường dẫn tương đối cho các tạo tác theo các quy ước Maven.

Ví dụ: cho groupId = com.foo.bar, artifactId = my-dự án version = 1.0.0, đường dẫn đến file sẽ là:

/com/foo/bar/my-project/my-project-1.0.0.jar 
/com/foo/bar/my-project/my-project-1.0.0.pom 

Lựa chọn 3

Nếu bạn muốn sử dụng Ant để triển khai vào một kho lưu trữ Maven, bạn có thể sử dụng một Ant HTTP library (Lưu ý tôi đã không tự mình thử). Bạn sẽ soạn hai tác vụ đặt HTTP, một cho jar và một cho POM.

<httpput url="http://path/to/your/repository" putFile="/path/to/yourproject.pom"> 
    <userCredentials username="user" password="password"/> 
</httpput> 
<httpput url="http://path/to/your/repository" putFile="/path/to/yourproject.jar"> 
    <userCredentials username="user" password="password"/> 
</httpput> 

Lựa chọn 4

Nếu bạn muốn tránh Maven hoàn toàn và sử dụng Ant để triển khai đến một kho SVN hậu thuẫn, bạn có thể sử dụng SvnAnt Subversion library. bạn chỉ cần cấu hình tác vụ Svn import để thêm các tạo tác của bạn vào kho lưu trữ Subversion từ xa.

<import path ="/dir/containing/the/jar/and/pom" 
    url="svn://your/svn/repository" 
    message="release"/> 
+0

Cảm ơn bạn, bài đăng này khá hữu ích. – javamonkey79

1

Kiểm tra xem kho lưu trữ Maven có hỗ trợ maven deploy plugin hay không. Đây sẽ là cách tiếp cận dễ nhất.

Hầu hết các kho lưu trữ đều sử dụng ssh làm phương tiện. Xem this để biết chi tiết.

Khi đó là thiết lập, tất cả các bạn phải làm là:

mvn deploy:deploy 
+0

Cảm ơn! Trông có vẻ thú vị. Thật không may, kịch bản xây dựng của tôi là trong ANT. Tôi không cho rằng có một plugin tương tự cho ANT :)? – jqno

7

Kiểm tra wagon-svn. Nó sẽ cho phép bạn triển khai một kho lưu trữ Subversion. Đó là một chút phức tạp, nhưng nó tốt hơn không có gì. Tôi biết một vài dự án sử dụng nó tại java.net, và tôi cũng đã bắt gặp một số dự án sử dụng nó tại code.google.com.

Nếu bạn muốn sử dụng nó, thì trước tiên bạn cần phải tải toa xe-svn như một phần mở rộng:

<build> 
    ... 
    <extensions> 
     <extension> 
     <groupId>org.jvnet.wagon-svn</groupId> 
     <artifactId>wagon-svn</artifactId> 
     <version>...</version> 
     </extension> 
    </extensions> 

Tiếp theo, bạn cần phải thiết lập các mục tiêu triển khai của bạn bằng cách sử dụng svn: nhận dạng giao thức. Đây là một ví dụ tôi đã sao chép từ Internet.

<distributionManagement> 
    <repository> 
     <id>maven-config-processor-plugin-repo-releases</id> 
     <name>Maven Repository for Config Processor Plugin (releases)</name> 
     <url>svn:https://maven-config-processor-plugin.googlecode.com/svn/maven-repo/releases</url> 
     <uniqueVersion>false</uniqueVersion> 
    </repository> 
    <snapshotRepository> 
     <id>maven-config-processor-plugin-repo-releases</id> 
     <name>Maven Repository for Config Processor Plugin (snapshots)</name> 
     <url>svn:https://maven-config-processor-plugin.googlecode.com/svn/maven-repo/snapshots</url> 
     <uniqueVersion>false</uniqueVersion> 
    </snapshotRepository> 
</distributionManagement> 
+0

Vì vậy, sẽ tự động hoá quá trình triển khai cho SVN, sau bài đăng trên blog mà tôi đã đề cập trong câu hỏi của tôi, đúng không? Tôi không cho rằng có một cái gì đó như thế này cho ANT cũng :)? – jqno

+0

Bạn có thể sử dụng Maven với wagon-svn. Bạn không phải tạo một dự án Maven toàn diện, chỉ cần tạo một Maven POM để triển khai. Vì vậy, bạn không sử dụng Maven để xây dựng hệ thống. Xây dựng JAR của bạn bằng cách sử dụng Ant, sau đó triển khai bằng cách sử dụng 'mvn deploy: deploy-file' và POM thích hợp để cấu hình wagon-svn và" svn maven repository ". –

+0

cấu hình wagon-svn ở trên không hoàn chỉnh, bạn cũng cần thêm kho lưu trữ java.net. Để biết thêm thông tin, hãy xem: https://wagon-svn.dev.java.net/ –

0

Bạn có thể gửi jar của bạn để https://clojars.org/

Trong pom.xml của bạn:

<repositories> 
    <repository> 
    <id>clojars.org</id> 
    <url>http://clojars.org/repo</url> 
    </repository> 
</repositories> 
Các vấn đề liên quan