2011-01-25 14 views
17

Tôi đang tìm một hướng dẫn về cách tạo các nguyên mẫu maven mới liên quan đến việc sử dụng các tham số để tạo thư mục và tên tệp nơi tham số được sử dụng làm tiền tố trong tên tệp và một phần của cấu trúc/thư mục được tạo bởi nguyên mẫu.Bất kỳ hướng dẫn nâng cao nào tốt về cách tạo các kiểu mẫu maven mới?

Tất cả những gì tôi có thể tìm thấy là hướng dẫn rất đơn giản về cách tạo các dự án rất đơn giản.

Trả lời

8

tại sao không sử dụng chính trang web của mình?

http://maven.apache.org/guides/mini/guide-creating-archetypes.html

+3

Nó chỉ cung cấp cho tôi những điều cơ bản. Tôi thậm chí còn lấy một định nghĩa nguyên mẫu nguồn mở mà tôi có thể sử dụng làm mẫu cho những gì tôi muốn làm. – menapole

+1

vì vậy xin lỗi xấu của tôi, tôi hiểu lầm phần cuối cùng "hướng dẫn đơn giản về cách thực hiện các dự án rất đơn giản." – fmucar

+0

bạn muốn tạo sth như appfuse nhưng với maven thì http://static.appfuse.org/? – fmucar

7

Tôi nghĩ rằng tôi thấy một trang web có giúp tôi một lần nữa một chút tôi đã tìm ra rằng Velocity mẫu được sử dụng như một phần của quá trình nguyên mẫu.

HowToCreateMavenArchetypeFromProject

1

Thậm chí, tôi đang tìm kiếm điều tương tự. Thậm chí tôi thấy trang chủ của Maven rất cơ bản và không đáp ứng yêu cầu của chúng tôi.

Tôi thậm chí đã thử HowToCreateMavenArchetypeFromProject Nhưng tôi vẫn có một câu hỏi. Làm thế nào để gọi một tập tin cụ thể của các nguyên mẫu khi dự án của loại nguyên mẫu được tạo ra. Để cụ thể, nếu tôi có một lớp java App.java làm thế nào để gọi đó trong khi tạo dự án?

Điều gì sẽ xảy ra với create-archetype-from-project là nó tạo ra một dự án của cùng một tệp và cấu trúc thư mục và chúng tôi cần chạy lại để thực hiện điều đó.

Ngoài ra, $ {groupId} và các nội dung như vậy chỉ hoạt động trong các tệp maven. Điều gì xảy ra nếu tôi có tệp thuộc tính và muốn sử dụng artifactId mà người dùng đã nhập?

Hãy cho tôi biết nếu bạn gặp phải bất kỳ nội dung nào tốt. Trong khi đó, tôi cũng sẽ cho bạn biết khi tôi tìm thấy bất kỳ giải pháp nào.

Cảm ơn

3

Tôi nghĩ rằng chúng tôi đã gặp cùng một vấn đề, cuối cùng tôi giải quyết nó với giác ngộ từ này article

giả sử bạn muốn tạo ra gói com.company.base. dal.dao, chúng ta gọi là com.company.base được gói root, dal.dao là gói cốt lõi, sau đó chỉ cần đưa file java mẫu của bạn dưới src/main/java/dal/dao, và tinh chỉnh các packaged="true" trong META-INF/maven/nguyên mẫu-metadata.xml như sau

  <fileSet filtered="true" packaged="true" encoding="GBK"><!--packaged="true" tells maven to copy the core package in to root package while creating a project.--> 
      <directory>src/main/java</directory> 
      <includes> 
       <include>**/*.java</include> 
      </includes> 
     </fileSet> 

nói, nếu bạn thiết lập -Dpackage=com.alibaba.china sau khi thực hiện nguyên mẫu mvn: tạo ra, nó sẽ tạo ra gói mã nguồn java như com/alibaba/china/dal/dao /sample.java

làm cách để cung cấp thông tin gói tiền tố trong mẫu.java, chỉ cần sử dụng $ {} gói như sau

package ${package}.dal.dao; 

plugin nguyên mẫu sẽ thay thế $ {} gói với -Dpackage như vận tốc mẫu

+0

Cảm ơn, điều này đã giúp tôi nhưng tôi cần thay đổi mã hóa thành 'UTF-8'. Ngoài ra, liên kết đã chết nên rất tốt khi bạn đưa đủ thông tin vào câu trả lời. – antonyh

+0

O Có, GBK là để chứa ký tự Trung Quốc, UTF-8 nên được phạt –

1

từ documentacion maven: http://maven.apache.org/archetype/archetype-models/archetype-descriptor/archetype-descriptor.html

Một fileset định nghĩa cách các tập tin của dự án nằm trong tệp jar được sử dụng bởi các Archetype Plugin để tạo ra một dự án. Nếu tên tệp hoặc thư mục có chứa thuộc tính mẫu, nó được thay thế bằng giá trị thuộc tính tương ứng.

nếu bạn có thể đặt tên cho tập tin như

__artifactId___local.properties

... khi bạn tạo ra proyect với artifactId = foo nó sẽ chứa tập tin này:

foo_local.properties

+0

Cảnh báo - regex quá tham lam vì vậy nếu bạn có một tên tập tin Blah___artifactId__ (ba gạch dưới ở giữa) nó sẽ thất bại với một thông điệp ngớ ngẩn nói 'có thể 't tìm biến _artifactId' khi bạn thực sự muốn một dấu gạch dưới chữ ở phía trước. –

+1

trong trường hợp này bạn có thể hack tạo một tài sản maven underscore = _ và đặt tên tệp là Blah__underscore____artifactId_ - –

+0

Đồng ý nhưng tôi đã thử chính xác điều đó nhưng không thành công - bây giờ tôi đã chọn thay đổi quy ước đặt tên để loại bỏ dấu gạch dưới. –