2010-10-13 12 views
13

Bạn sẽ cấu trúc như thế nào Freemarker (hoặc thay thế) làm trình tạo mã templating thành một dự án Maven? Tôi khá mới với Maven và sẽ đánh giá cao một số trợ giúp.Làm cách nào để sử dụng trình tạo mã mẫu (ví dụ: freemarker) trong Maven?

Tôi muốn tạo một số mã từ các mẫu trong dự án của mình. [a]

Thay vì viết riêng, googling của tôi tìm thấy freemarker có vẻ như được sử dụng bởi Spring, đây là tài liệu tham khảo đủ tốt cho tôi, mặc dù tôi chưa bắt đầu, bất kỳ đề xuất nào khác hoạt động tốt Maven cũng sẽ được đánh giá cao.

This website cho tôi biết cách thêm nó làm phụ thuộc vào tệp pom.xml của tôi. This SO question cho tôi biết nơi nguồn được tạo nên đi. Những gì tôi không thể làm ra là làm thế nào để kết hợp tất cả lại với nhau, vì vậy tôi nhận được các nguồn được tạo từ các mẫu và sau đó các nguồn được tạo của tôi được sử dụng như các nguồn thông thường để biên dịch, thử nghiệm, jar, javadoc v.v. trình tạo mã mẫu cho java trong maven và có thể trợ giúp?

[a] Tôi biết Generics sẽ là giải pháp thông thường, và trên thực tế tôi đang sử dụng chúng, nhưng tôi phải sử dụng các mẫu để đối phó với các trường hợp nguyên thủy mà không đưa ra lỗi sao chép/dán. Hãy tin tôi về điều này :-)

Trả lời

20

Tôi đã viết một plugin maven cho mục đích này. Nó sử dụng FreeMarker Pre Processor.

Heres đoạn từ pom.xml nhấn mạnh việc sử dụng của nó:

<plugins> 
    <plugin> 
     <configuration> 
      <cfgFile>src/test/resources/freemarker/config.fmpp</cfgFile> 
      <outputDirectory>target/test/generated-sources/fmpp/</outputDirectory> 
      <templateDirectory>src/test/resources/fmpp/</templateDirectory> 
     </configuration> 
     <groupId>com.googlecode.fmpp-maven-plugin</groupId> 
     <artifactId>fmpp-maven-plugin</artifactId> 
     <version>1.0</version> 
     <executions> 
      <execution> 
       <phase>generate-sources</phase> 
       <goals> 
        <goal>generate</goal> 
       </goals> 
      </execution> 
     </executions> 
    </plugin> 
</plugins> 

Ở đây cfgFile là con đường, nơi bạn giữ cho các tập tin cấu hình cho FMPP. (nếu bạn không sử dụng bất kỳ dữ liệu đặc biệt nào trong FreeMarker, thì một tệp trống sẽ là đủ) templateDirectory là nơi bạn giữ các mẫu FreeMarker. outputDirectory là nơi bạn muốn tạo các tập tin đầu ra.

Tôi đang trong quá trình viết tài liệu chi tiết làm nổi bật việc sử dụng plugin và sẽ cập nhật project website cho phù hợp.

+0

+1 cho plugin. –

+0

Tài liệu đó sẽ hoạt động như thế nào? :-) Tôi không thể tìm ra cách để vượt qua các giá trị từ pom (ví dụ, project.version) thông qua để các plugin freemarker nhận thức được chúng. – bacar

+1

Cảm ơn bạn đã sử dụng plugin! Nó rất hữu ích cho một thư viện tôi vừa viết! https://github.com/mintern-java/functions –

0

Dưới đây là một plugin cho công việc: https://code.google.com/p/maven-replacer-plugin/

Từ mô tả gốc của vấn đề có vẻ như bạn nên xem xét việc tạo ra một Maven Archetype (aka Project Template): http://maven.apache.org/archetype/maven-archetype-plugin/

Và nó nghe như bạn có thể muốn thêm một số thuộc tính vào phương trình: http://maven.apache.org/archetype/maven-archetype-plugin/examples/create-with-property-file.html

Chức năng của Maven Archetype cũng cung cấp phương tiện thay thế bằng Apache Veloci ty (gần giống như Freemarker) ... nhưng tôi chưa từng làm việc đó chút nào.