2010-08-11 29 views
11

Tôi đã tạo một nguyên mẫu Maven cho một thiết lập dự án tùy chỉnh, đang hoạt động tuyệt vời, nhưng tôi đã tự hỏi liệu có thể truyền các tham số bổ sung để tôi có thể làm một số mẫu thú vị hơn không. Tôi cố gắng một cái gì đó giống nhưChuyển các thuộc tính bổ sung vào kiểu mẫu maven: tạo

mvn archetype:generate -DarchetypeCatalog=local -DdbHost=localhost 

và đưa

... 
<option name="db.host.config.option" value="${dbHost}" /> 
... 

trong mẫu của tôi, nhưng điều đó dường như không làm việc. Có cách nào để làm điều này với một nguyên mẫu?

Trả lời

16

Bạn chỉ cần đề cập đến dbHostrequiredProperty trong META-INF/maven/archetype-metadata.xml.

<archetype-descriptor name="basic"> 
    <requiredProperties> 
     <requiredProperty key="dbHost"/> 
    </requiredProperties> 
</archetype-descriptor> 
+0

Cảm ơn, bạn có thể mở rộng trên đó một chút? Tôi không chắc tôi đủ quen thuộc với cú pháp. – Ceilingfish

+2

chắc chắn. Trong dự án nguyên mẫu của bạn, bạn phải tạo một dự án thư mục/META-INF/maven. Trong thư mục đó, bạn phải tạo một tệp có tên là archetype-metadata.xml. Trong tệp đó, bạn nên thêm các thẻ requiredProperty cho mỗi đối số cấu hình mà bạn muốn có. Bạn có thể tìm thêm chi tiết tại đây http://maven.apache.org/archetype/maven-archetype-plugin/specification/archetype-metadata.html – devsprint

+0

Tôi đã thử điều này, nhưng gặp phải sự nhầm lẫn giữa việc điều này có nên đi trong nguyên mẫu hay không metadata.xml (như bạn đề xuất) hoặc đặt nó trong archetype.xml và một số nội dung của archetype.xml dường như không hoạt động nếu tôi đặt nó trong archetype-metadata.xml và gặp sự cố nếu tôi cố gắng có cả hai các tệp trong nguyên mẫu của tôi cùng nhau. Xem http://stackoverflow.com/questions/36342578/whats-the-difference-between-archetype-xml-and-archetype-metadata-xml-in-maven – Jibbyj

7

Mặc dù câu hỏi này là khá cũ, tôi sẽ cung cấp kinh nghiệm của riêng tôi với Maven 3,04

Trong khi tạo nguyên mẫu từ một dự án (tạo-từ-dự án), bạn có thể chuyển một tệp thuộc tính làm đối số. Mỗi thuộc tính duy nhất (khóa = giá trị) được truyền sẽ lần lượt tạo ra một requiredProperty trong tệp archetype-metadata.xml, với "giá trị" làm giá trị mặc định của nó.
Mặt khác, quy trình tạo mẫu sẽ tìm chuỗi "giá trị" trong tệp văn bản của chúng tôi và thay thế bằng "$ {key}" (ví dụ: dbHost = db.host.config.option sẽ tìm "db .host.config.option "và thay thế nó bằng $ {dbHost}).

Trong khi sử dụng nguyên mẫu cho các thế hệ dự án cuối cùng (với tạo), chúng tôi được cung cấp cơ hội để cung cấp giá trị cho tham số này, với -D chính = giá trị. Vì vậy, không cần chỉnh sửa tệp archetype-metadata.xml bằng tay.

+0

Bạn có thể đăng một ví dụ về cách truyền tệp thuộc tính làm đối số tới 'mvn archetype: create-from-project'? –

0

chúng ta cần phải chuyển giá trị thuộc tính trong dấu nhắc lệnh cũng bằng cách duy trì nó trong archetype-metadat.xml nhưng ở đây tên không nên chứa "." biểu tượng vì nó không cho phép bạn cập nhật các giá trị.

Đó là hạn chế trong Maven để không sử dụng tên như prod.ex.version bạn có thể sử dụng sản-cũ phiên bản

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