2008-09-16 27 views
44

Tôi biết rằng tôi có thể thêm kho lưu trữ maven để tìm nạp phụ thuộc trong ~/.m2/settings.xml. Nhưng có thể thêm một kho lưu trữ bằng cách sử dụng dòng lệnh, chẳng hạn như:Tôi có thể thêm kho lưu trữ maven vào dòng lệnh không?

mvn install -Dmaven.repository=http://example.com/maven2 

Lý do tôi muốn làm điều này là vì tôi đang sử dụng công cụ tích hợp liên tục nơi tôi có toàn quyền kiểm soát dòng lệnh sử dụng để gọi maven, nhưng quản lý settings.xml cho người dùng chạy công cụ tích hợp là một chút rắc rối.

Trả lời

57

Bạn có thể làm điều này nhưng có lẽ bạn nên làm điều đó trong POM như những người khác đã nói.

Trên dòng lệnh, bạn có thể chỉ định thuộc tính cho kho lưu trữ cục bộ và một kho lưu trữ khác cho kho lưu trữ từ xa. Kho lưu trữ từ xa sẽ có tất cả các cài đặt mặc định mặc dù

Ví dụ dưới đây chỉ định hai kho lưu trữ từ xa và một kho lưu trữ cục bộ tùy chỉnh.

mvn package -Dmaven.repo.remote=http://www.ibiblio.org/maven/,http://myrepo 
    -Dmaven.repo.local="c:\test\repo" 
+8

có vẻ như cách này không hoạt động đối với maven2 hoặc tôi có sai không? –

+0

Điều này rất hữu ích để kiểm tra một repo sonatype kín trước khi phát hành. – schmmd

+2

Làm cách nào để chỉ định tên người dùng và mật khẩu cho điều khiển từ xa? –

3

Tôi không chắc chắn liệu bạn có thể làm điều đó bằng dòng lệnh hay không. Mặt khác, bạn có thể thêm các kho lưu trữ trong pom.xml như trong ví dụ sau. Sử dụng phương pháp này bạn không cần phải thay đổi tệp ~/.m2/settings.xml.

<?xml version="1.0" encoding="UTF-8"?> 
    <project xmlns="http://maven.apache.org/POM/4.0.0" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    ... 
    <repositories> 
      <repository> 
       <id>MavenCentral</id> 
       <name>Maven repository</name> 
       <url>http://repo1.maven.org/maven2</url> 
       <releases> 
        <enabled>true</enabled> 
       </releases> 
       <snapshots> 
        <enabled>false</enabled> 
       </snapshots> 
      </repository> 
... 
      <repository> 
       <id>Codehaus Snapshots</id> 
       <url>http://snapshots.repository.codehaus.org/</url> 
       <snapshots> 
        <enabled>true</enabled> 
       </snapshots> 
       <releases> 
        <enabled>false</enabled> 
       </releases> 
      </repository> 
     </repositories> 

    ... 

     <pluginRepositories> 
      <pluginRepository> 
       <id>apache.snapshots</id> 
       <name>Apache Snapshot Repository</name> 
       <url> 
        http://people.apache.org/repo/m2-snapshot-repository 
       </url> 
       <releases> 
        <enabled>false</enabled> 
       </releases> 
      </pluginRepository> 
      <pluginRepository> 
       <id>Codehaus Snapshots</id> 
       <url>http://snapshots.repository.codehaus.org/</url> 
       <snapshots> 
        <enabled>true</enabled> 
       </snapshots> 
       <releases> 
        <enabled>false</enabled> 
       </releases> 
      </pluginRepository> 
     </pluginRepositories> 

    ... 

    </project> 
1

tôi đã không thực sự sử dụng maven 2 trước đây, hệ thống của chúng tôi vẫn đang làm việc trên maven 1.x vì một số vấn đề với maven 2.

Tuy nhiên, nhìn vào các tài liệu cho maven 2 có vẻ như rằng không có bất kỳ thuộc tính hệ thống cụ thể nào như vậy. Tuy nhiên, bạn có thể có thể xây dựng một trong các poms/settings của bạn bằng cách sử dụng các thuộc tính hệ thống. Xem phần Thuộc tính hệ thống của số này http://maven.apache.org/settings.html

Vì vậy, bạn có $ {maven.repository} trong tệp cài đặt của mình và sau đó sử dụng -Dmaven.repository như bạn làm ở trên.

Tôi không chắc chắn liệu điều này có hiệu quả hay không, nhưng với một số điều chỉnh, tôi chắc chắn bạn có thể tìm ra điều gì đó.

3

Là @Jorge Ferreira đã được đặt định nghĩa kho lưu trữ của bạn trong tệp pom.xml. Sử dụng profiles adittionally để chọn kho để sử dụng thông qua dòng lệnh:

mvn deploy -P MyRepo2 

mvn deploy -P MyRepo1 
1

Tạo một POM có các thiết lập kho mà bạn muốn và sau đó sử dụng một yếu tố phụ huynh trong POMs dự án của bạn để kế thừa các kho bổ sung. Việc sử dụng một "tổ chức" POM có một số lợi ích khác khi một nhóm các dự án thuộc về một nhóm.

5

Một trong những mục tiêu cho Mô hình đối tượng dự án Maven't (POM) là nắm bắt tất cả thông tin cần thiết để tái tạo một tạo phẩm một cách đáng tin cậy, do đó các cài đặt ảnh hưởng đến việc tạo tác phẩm không được khuyến khích.

Để đạt được mục tiêu của mình, bạn có thể kiểm tra tệp settings.xml cấp người dùng của mình với từng dự án và sử dụng tùy chọn -s (hoặc --settings) để chuyển nó tới bản dựng.

2

Tôi sẽ giả định rằng bạn đang hỏi điều này bởi vì đôi khi bạn muốn thêm kho lưu trữ của bên thứ ba mới vào bản dựng của mình. Tôi có thể sai tất nhiên ...:)

Đặt cược tốt nhất của bạn trong trường hợp này là sử dụng proxy được quản lý chẳng hạn như artifactory hoặc nexus. Sau đó, thực hiện thay đổi một lần trong tệp settings.xml để thiết lập điều này làm gương cho thế giới.

Bất kỳ repo nào của bên thứ ba mà bạn cần thêm từ điểm đó đều có thể được xử lý qua proxy.

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