2012-01-17 30 views
9

Tôi đang sử dụng Maven 3.0.3 với Git. Tôi sử dụng một công cụ tích hợp (Bamboo) để kiểm tra một chi nhánh mã từ Git vào một thư mục. Công cụ này sau đó sử dụng Maven chạy vòng đời xây dựng tiêu chuẩn (biên dịch, thử nghiệm, triển khai). Điều tôi muốn là nếu nhiệm vụ triển khai Maven của tôi thành công, tôi muốn gắn thẻ phiên bản mã của tôi được kiểm tra trong Git. Làm thế nào tôi có thể làm điều này từ Maven? Bất kỳ cấu hình mẫu nào bạn có thể cung cấp đều được đánh giá cao.Sử dụng Maven, Git: Làm cách nào để gắn thẻ phiên bản mới nhất của mã?

Trả lời

5

Sử dụng maven scm plugin. Xem tag functionality in advanced features, cần phải có liên quan.

Hiện tại, hỗ trợ git không xuất hiện, do đó bạn cần phụ thuộc vào maven-scm-provider-gitexe. Ngoài ra, để khắc phục plexus exception issue, bạn cũng sẽ cần phải thêm phụ thuộc vào phiên bản sau của plexus.

Đây là những gì làm việc cho tôi:

<project> 
    <scm> 
     <connection>scm:git:https://[email protected]/my-project.git</connection> 
     <developerConnection>scm:git:https://[email protected]/my-project.git</developerConnection> 
    </scm> 
    <!-- snip --> 
    <build> 
     <plugins> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-scm-plugin</artifactId> 
     <dependencies> 
      <dependency> 
       <groupId>org.codehaus.plexus</groupId> 
       <artifactId>plexus-utils</artifactId> 
       <version>2.1</version> 
      </dependency> 
      <dependency> 
       <groupId>org.apache.maven.scm</groupId> 
       <artifactId>maven-scm-provider-gitexe</artifactId> 
       <version>1.2</version> 
      </dependency> 
     </dependencies> 
     <version>1.0</version> 
     <configuration> 
      <tag>test</tag> 
      <connectionType>connection</connectionType> 
     </configuration> 
     <executions> 
      <execution> 
      <id>tag</id> 
      <phase>deploy</phase> 
      <goals> 
      <goal>tag</goal> 
      </goals> 
      </execution> 
     </executions> 
     </plugin> 
    </plugins> 
    </build> 
    <!-- snip --> 
</project> 
+0

COOL, điều này làm những gì tôi muốn, mặc dù khi tôi chạy nó back-to-back lần, tôi nhận được một lỗi "[ERROR] gây tử vong: thẻ 'qa_release' đã tồn tại" trên lần chạy thứ hai. Tôi có thể phải mở câu hỏi này như một câu hỏi khác. – Dave

+0

có, bạn sẽ cần một cái gì đó động (một thuộc tính) cho tên thẻ, trong ví dụ này nó là tĩnh. – eis

+0

nếu thẻ mới nhất có thể được cung cấp dưới dạng thông số dòng lệnh, bạn chỉ có thể sử dụng $ {parameter.version} và chạy maven với -Dparameter.version = v1.2, sau đó sẽ được sử dụng. Nếu autogeneration bởi maven plugin là cần thiết, một số logic bổ sung là cần thiết. – eis

0

Tôi khuyên bạn nên dự án mã nguồn mở nhỏ tôi m một phần của -it được gọi là Quicktag và hoạt động với một vài VCS - https://code.google.com/p/quicktag-maven-plugin. Thêm plugin và nó sẽ tạo ra lớp Java với các trường tĩnh chứa thông tin xây dựng.

0

maven-release-Plugin chỉ cần khai báo scm:

<scm> 
    <url>https://github.com/username/repoName</url> 
    <connection>scm:git:git://github.com/username/repoName.git</connection> 
    <developerConnection>scm:git:[email protected]:username/repoName.git</developerConnection> 
    <tag>HEAD</tag> 
</scm> 

tạo phím git ssh

https://help.github.com/articles/generating-ssh-keys/

và chạy phát hành mvn: chuẩn bị

thêm từ https://github.com/kevinsawicki/github-maven-example

Các vấn đề liên quan