2010-11-04 30 views
6

Tôi hiện đang gặp sự cố khi cố gắng thiết lập dự án để triển khai vào kho lưu trữ nội bộ. Vì tôi khá mới với Maven nói chung, tôi hy vọng rằng chỉ có một cái gì đó mà tôi không thực sự hiểu trong cách thiết lập quản lý phân phối.Tại sao Maven (không chính xác?) Triển khai SNAPSHOT của tôi cho cả kho phát hành và ảnh chụp nhanh?

Vấn đề cơ bản là khi tôi thực thi "triển khai mvn", phần tạo tác đang được triển khai thành công vào kho lưu trữ ảnh chụp, nhưng Maven cũng đang cố gắng triển khai nó vào kho lưu trữ, không thành công ... như nó cần. Sự hiểu biết của tôi về cấu hình hiện tại của tôi là nó KHÔNG nên triển khai nó vào kho lưu trữ phát hành.

Tôi đã bao gồm các phần tử cấu hình khác nhau bên dưới, nhưng tôi tự hỏi liệu tôi có thực sự quản lý phần đó với cấu hình sao cho ảnh chụp nhanh chỉ được xác định và bản phát hành chỉ được xác định.

Bất kỳ trợ giúp/giải thích nào về điều này sẽ được đánh giá cao.

Tôi có sau trong POM của tôi cho quản lý phân phối:

<distributionManagement> 
<repository> 
    <id>internal-releases</id> 
    <name>Internal Releases</name> 
    <url>http://localhost:8081/nexus/content/repositories/releases</url> 
</repository> 
<snapshotRepository> 
    <id>internal-snapshots</id> 
    <name>Internal Snapshots</name> 
    <url>http://localhost:8081/nexus/content/repositories/snapshots</url> 
</snapshotRepository> 
</distributionManagement> 

Ở những nơi khác trong POM Tôi đã sau đây thiết lập để cho phép sử dụng các kho để có được hiện vật:

<repositories> 
<repository> 
    <id>internal-releases</id> 
    <url>http://localhost:8081/nexus/content/repositories/releases</url> 
    <snapshots><enabled>false</enabled></snapshots> 
</repository> 
<repository> 
    <id>internal-snapshots</id> 
    <url>http://localhost:8081/nexus/content/repositories/snapshots</url> 
    <snapshots><enabled>true</enabled></snapshots> 
</repository> 
<!-- other repos, etc, etc --> 
</repositories> 

tôi có các cài đặt chính xác trong tệp settings.xml của tôi để cung cấp thông tin xác thực để có thể xuất bản lên cá thể thử nghiệm nexus đang chạy trên máy tính của tôi và thực tế triển khai thành công ảnh chụp nhanh đó.

Vấn đề là nó cũng cố gắng triển khai ảnh chụp nhanh vào kho lưu trữ bản phát hành, được định cấu hình để không cho phép chụp nhanh.

Kết quả từ "mvn triển khai" bao gồm những điều sau đây:

[INFO] [deploy:deploy {execution: default-deploy}] 
[INFO] Retrieving previous build number from internal-snapshots 
Uploading: http://localhost:8081/nexus/content/repositories/snapshots/com/internal/service/1.0.0-SNAPSHOT/service-1.0.0-20101104.170338-8.war 
405K uploaded (service-1.0.0-20101104.170338-8.war) 
[INFO] Retrieving previous metadata from internal-snapshots 
[INFO] Uploading repository metadata for: 'snapshot com.internal:service:1.0.0-SNAPSHOT' 
[INFO] Retrieving previous metadata from internal-snapshots 
[INFO] Uploading repository metadata for: 'artifact com.internal:service' 
[INFO] Uploading project information for service 1.0.0-20101104.170338-8 
[INFO] [deploy:deploy-file {execution: default}] 
[INFO] Retrieving previous build number from remote-repository 
[INFO] repository metadata for: 'snapshot com.internal:service:1.0.0-SNAPSHOT' could not be found on repository: remote-repository, so will be created 
Uploading: http://localhost:8081/nexus/content/repositories/releases/com/internal/service/1.0.0-SNAPSHOT/service-1.0.0-20101104.170338-1.jar 
[INFO] ------------------------------------------------------------------------ 
[ERROR] BUILD ERROR 
[INFO] ------------------------------------------------------------------------ 
[INFO] Error deploying artifact: Failed to transfer file: http://localhost:8081/nexus/content/repositories/releases/com/internal/service/1.0.0-SNAPSHOT/service-1.0.0-20101104.170338-1.jar. Return code is: 400 

Nhật ký từ Nexus chứa sau (như tôi mong chờ nó):

jvm 1 | 2010-11-04 13:03:39 INFO [p-759477796-118] - o.s.n.p.m.m.M2Repos~   - Storing of item releases:/com/internal/service/1.0.0-SNAPSHOT/service-1.0.0-20101104.170338-1.jar is forbidden by Maven Repository policy. Because releases is a RELEASE repository 
jvm 1 | 2010-11-04 13:03:39 ERROR [p-759477796-118] - o.s.n.r.ContentPlex~   - Got exception during processing request "PUT http://localhost:8081/nexus/content/repositories/releases/com/internal/service/1.0.0-SNAPSHOT/service-1.0.0-20101104.170338-1.jar": Storing of item releases:/com/internal/service/1.0.0-SNAPSHOT/service-1.0.0-20101104.170338-1.jar is forbidden by Maven Repository policy. Because releases is a RELEASE repository 

Trả lời

5

Vì vậy, đầu mối tốt nhất thực sự hóa ra ngay trước mắt tôi trong nhật ký. Vật phẩm duy nhất mà tôi nghĩ đã được sản xuất bởi POM mà tôi đang làm việc với một chiến dịch .war, nhưng bạn sẽ nhận thấy trong nhật ký rằng tạo tác mà Maven đang cố gắng triển khai cho bản phát hành thực sự là một .jar.

Điều này là đủ của một con trỏ (một người nào đó trên danh sách gửi thư của người dùng Maven được cung cấp) tìm kiếm và cuối cùng thấy rằng ai đó đã bao gồm cấu hình bổ sung sau cho giai đoạn triển khai.

<plugin> 
<groupId>org.apache.maven.plugins</groupId> 
<artifactId>maven-deploy-plugin</artifactId> 
<executions> 
<execution> 
    <phase>deploy</phase> 
    <goals> 
     <goal>deploy-file</goal> 
    </goals> 
    <configuration> 
     <packaging>jar</packaging> 
     <generatePom>true</generatePom> 
     <url>${project.distributionManagement.repository.url}</url> 
     <artifactId>${project.artifactId}</artifactId> 
     <groupId>${project.groupId}</groupId> 
     <version>${project.version}</version> 
     <file>${project.build.directory}/${project.build.finalName}.jar</file> 
    </configuration> 
    </execution> 
</executions> 
</plugin> 

Lưu ý rằng trên thực tế, tham chiếu trực tiếp ${project.distributionManagement.repository.url}. Ngoài ra, cấu hình này hơi bị nhầm lẫn và thực sự phải được thực hiện thông qua thuộc tính attachClasses của plugin chiến dịch.

2

thể nó là do artifact phiên bản không có hậu tố -SNAPSHOT?

+0

Phiên bản tạo tác là 1.0.0-SNAPSHOT, vì vậy không. – imaginaryboy

+1

Câu trả lời này phải là nhận xét, tôi nghĩ –

9
  1. Xác định tài sản sau đây trong pom của bạn cấu hình

    <deployFileUrl>${project.distributionManagement.snapshotRepository.url}</deployFileUrl> 
    
  2. Thay đổi maven-triển khai-plugin như sau:

    <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-deploy-plugin</artifactId> 
        <version>2.5</version> 
        <configuration> 
         <skip>true</skip> 
        </configuration> 
        <executions> 
         <execution> 
          <phase>deploy</phase> 
          <configuration> 
           <packaging>jar</packaging> 
           <generatePom>true</generatePom> 
           <url>${deployFileUrl}</url> 
           <artifactId>${project.artifactId}</artifactId> 
           <groupId>${project.groupId}</groupId> 
           <version>${project.version}</version> 
           <file>${project.build.directory}/${project.build.finalName}.jar</file> 
          </configuration> 
          <goals> 
           <goal>deploy-file</goal> 
          </goals> 
         </execution> 
        </executions> 
    </plugin> 
    
  3. Add hồ sơ sau đây để thiết lập thuộc tính với kho deployFileUrl url

    <profiles> 
        <profile> 
         <id>release-mode</id> 
         <properties> 
          <deployFileUrl>${project.distributionManagement.repository.url}</deployFileUrl> 
         </properties> 
        </profile> 
    </profiles> 
    
  4. Cuối cùng gọi hồ sơ này trong maven-release-Plugin

    <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-release-plugin</artifactId> 
        <version>2.0-beta-9</version> 
        <configuration> 
         <releaseProfiles>release-mode</releaseProfiles> 
        </configuration> 
    </plugin> 
    
Các vấn đề liên quan