2012-11-05 52 views
18

Tôi có một loạt các dự án phụ thuộc vào bộ thư viện thương mại của bên thứ ba. Chúng tôi hiện không có kho lưu trữ công ty nên tôi phải cài đặt các thư viện trong repo cục bộ của riêng mình.Tệp Maven POM để cài đặt nhiều thư viện thương mại của bên thứ ba

Chạy mvn install:installFile -Dpackaging=jar -Dfile=<file> -DgroupId=<groupId> -DartifactId=<artifactId> -Dversion=<version> cho mỗi tệp khá tẻ nhạt. Có thể tạo một tập tin bat, nhưng có cách nào để làm điều này bằng cách sử dụng maven?

Tôi đang nghĩ một dự án cho tất cả các lọ và một tệp pom duy nhất với tất cả id nhóm, id tạo tác, phiên bản và tên tệp và khả năng chỉ chạy mvn install trong dự án đó hoặc một thứ gì đó dọc theo các dòng đó.

Có điều gì giống như vậy không?


Lưu ý: Tôi đang sử dụng Maven 3, nhưng một giải pháp tương thích Maven 2 sẽ được tốt đẹp quá.

Trả lời

8

Gần đây, phát hiện ra một giải pháp mới cho vấn đề này. Về cơ bản bạn có thể tạo một kho lưu trữ cục bộ trong dự án có thể được kiểm tra với phần còn lại của mã nguồn. Đã viết blog ở đây: http://www.geekality.net/?p=2376.

Ý chính là triển khai các phụ thuộc vào một thư mục trong dự án của bạn.

mvn deploy:deploy-file 
    -Durl=file:///dev/project/repo/ 
    -Dfile=somelib-1.0.jar 
    -DgroupId=com.example 
    -DartifactId=somelib 
    -Dpackaging=jar 
    -Dversion=1.0 

Và sau đó chỉ cần để Maven biết và sử dụng khai báo phụ thuộc như bình thường thông qua pom.xml của bạn.

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

<dependency> 
    <groupId>com.example</groupId> 
    <artifactId>somelib</artifactId> 
    <version>1.0</version> 
</dependency> 

Không vô cùng Maven'y, nhưng nó hoạt động và di chuyển phụ thuộc vào một kho lưu trữ công ty sau đó nên được khá đơn giản.

32

Bạn chỉ có thể tạo tệp pom.xml với nhiều lần thực thi install-file mục tiêu của plugin cài đặt Maven. Giả sử các tệp đó đã có sẵn cục bộ ở đâu đó (hoặc bạn có thể tải xuống chúng using Wagon plugin).

<project> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>org.somegroup</groupId> 
    <artifactId>my-project</artifactId> 
    <version>1.0</version> 

    <build> 
     <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-install-plugin</artifactId> 
      <version>2.4</version/> 
      <executions> 
      <execution> 
       <id>install1</id> 
       <phase>package</phase> 
       <goals> 
       <goal>install-file</goal> 
       </goals> 
       <configuration> 
       <file>lib/your-artifact-1.0.jar</file> 
       <groupId>org.some.group</groupId> 
       <artifactId>your-artifact</artifactId> 
       <version>1.0</version> 
       ... other properties 
       </configuration> 
      </execution> 
      <execution> 
       <id>install2</id> 
       <phase>package</phase> 
       <goals> 
       <goal>install-file</goal> 
       </goals> 
       ... etc 

      </execution> 
      ... other executions 
      </executions> 
     </plugin> 
     </plugins> 
    </build> 
    </project> 

Vì vậy, với mảnh vụn trên mvn package nên thực hiện thủ thuật.

Có tốt Maven POM tutorialPOM reference.

+0

Giả sử bạn có tệp pom.xml và một thư mục có tên là lib nơi tất cả các tệp jar đều có. Bạn có thể tạo một ví dụ? – Svish

+0

Nó là hình thức thẳng các tài liệu, nhưng ở đây bạn đi ... –

+0

Xin lỗi, tôi là một newb hoàn thành trong lĩnh vực này. Phần còn lại của tệp trông như thế nào? Với tệp pom.xml càng nhỏ càng tốt. – Svish

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