2013-01-02 24 views
5

Chúng tôi muốn tạo một nguyên mẫu một phần để thêm custom-pom.xml cũng như các tài nguyên khác vào một dự án hiện có. Sau đó, pom tùy chỉnh sẽ được sử dụng trong dự án được tạo thông qua mvn -f custom-pom.xml.Maven Archetype Plugin - Cách sử dụng một nguyên mẫu một phần không chứa pom.xml?

Nguyên mẫu của chúng tôi do đó chứa src/main/resources/archetype-resources/osgi-pom.xml, nhưng không chứa pom.xml trong cùng một thư mục.

Chúng tôi đã sử dụng archetype:generate được tham số thích hợp để chạy kiểu mẫu này trên một dự án hiện có. Điều này tạo ra:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-archetype-plugin:2.2:generate (default-cli) on project standalone-pom: org.apache.maven.archetype.exception.ArchetypeGenerationFailure: Error merging velocity templates: Unable to find resource 'archetype-resources/pom.xml' -> [Help 1] 

Là một thử nghiệm, chúng tôi đã tạo ra một hình nộm archetype-resources/pom.xml sau đó lại chạy mục tiêu generate. Điều này tạo ra:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-archetype-plugin:2.2:generate (default-cli) on project standalone-pom: Don't override file /tmp/archetype/fabric-rf-server/pom.xml -> [Help 1] 

Chúng tôi thấy this example không có archetype-resources/pom.xml. Tuy nhiên, chúng tôi đang sử dụng tiêu chuẩn Archetype 2.0x, đó có thể là lý do tại sao chiến thuật này hoạt động cho tác giả đó chứ không phải chính chúng ta.

Làm cách nào chúng tôi có thể giải quyết vấn đề này? Là một nguyên mẫu một phần không thích hợp để chèn tài nguyên vào một dự án Maven hiện có - phải thay vì dự án không phải là Maven?

Chúng tôi đã tẩy rửa Maven Archetype plugin 2.2 documentation nhưng hầu như không có bất kỳ đề cập nào về các nguyên mẫu một phần và hành vi chuyên môn của chúng.

Trả lời

4

Hóa ra thông báo lỗi thứ hai được liệt kê trong OP là do các thuộc tính POM xung đột (artifactId, groupIdversion). Việc xóa các mục này khỏi số archetype-resources/pom.xml đã giải quyết được sự cố.

Điều gì thực sự xảy ra với nguyên mẫu một phần là dự án hiện tại có POM được hợp nhất với mẫu đó trong nguyên mẫu. Vì vậy, xung đột tài sản này đã gây ra sự hợp nhất thất bại.

Chúng tôi xác định rằng việc hợp nhất sẽ xảy ra sau khi khám phá the source code.

+0

Maven dường như đang bị hình thành một số rối loạn lưỡng cực nghiêm trọng. Nếu tôi cung cấp cho nó archetype-resources/pom.xml, nó bảo tôi không viết lại nó. Nếu tôi không cho nó, nó nói với tôi rằng nó cần nó. Nếu tôi đưa nó nhưng trống, nó phàn nàn rằng nó không bắt đầu bằng . Nếu tôi bắt đầu nó với nó chỉ trở lại bước 1 và bảo tôi không viết lại pom.xml. Làm thế nào bạn có được từ catch22 này? – kaqqao

+0

@kaqqao Không chắc chắn, đây là một thời gian dài trước đây.Tôi vẫn còn có các tập tin làm việc - khi bạn thêm '' Tôi đoán bạn đang bao gồm tất cả các không gian tên thông thường guff vv? Vì vậy, làm việc của tôi bắt đầu với điều này: ' 4.0 .0 ' – KomodoDave

0

mỗi Không ghi đè tập tin lỗi, đó là bởi vì có một hoặc filesets chồng chéo hơn, cấu hình để sao chép cùng một file vào cùng một vị trí, vui lòng xem kỹ "achetype-metadata.xml" nguyên mẫu của bạn, loại bỏ các cấu hình trùng lặp sẽ giải quyết vấn đề này

cho ví dụ dưới đây, nếu có tệp test.xml trong thư mục cấu hình, nó sẽ được xử lý hai lần theo tốc độ và đối với quy trình thứ hai, nó sẽ in cảnh báo. nếu tệp là pom.xml, nó sẽ gây ra lỗi xây dựng

<fileSet filtered="true" encoding="UTF-8"> 
    <directory>config/src</directory> 
    <includes> 
    <include>**/*.vm</include> 
    <include>**/*.xml</include> 
    </includes> 
</fileSet> 
<fileSet filtered="true" encoding="UTF-8"> 
    <directory>config</directory> 
    <includes> 
    <include>**/*.xml</include> 
    </includes> 
</fileSet> 
0

Đừng ghi đè lỗi tệp, vì có một hoặc nhiều tập hợp chồng chéo.

Xóa các tập hợp trùng lặp sẽ giải quyết được sự cố.

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