2010-10-23 16 views
5

Tôi đã là người dùng thời gian dài của hệ thống Xây dựng, nhưng tôi đã quyết định bắt đầu học hệ thống xây dựng Maven. Trong khi tôi đã đọc qua hầu hết các tài liệu trực tuyến, thì dường như không có tài liệu nào tôi đưa ra. Tôi hiểu vòng đời của hệ thống, nhưng tôi không thấy một tham chiếu nào để biên dịch các phụ thuộc bước. Ví dụ, tôi muốn tạo một ngữ pháp JFlex như là một phần của bước vòng đời biên dịch. Hiện tại, tôi thấy không có cách nào để thực hiện bước đó một bước giai đoạn biên dịch trước. Tài liệu dường như bị hạn chế về điều này. Nói chung, khái niệm về các phụ thuộc bước dường như được đưa vào Maven và yêu cầu một plugin cho bất kỳ sự thay đổi nào. Đây có phải là trường hợp không? Tôi đang thiếu gì, bởi vì hiện tại hệ thống xây dựng Maven có vẻ rất hạn chế trong cách bạn có thể thiết lập các bước biên dịch.Chuyển đến Maven từ GNUMake

Trả lời

4

Bạn có thể làm bất cứ điều gì trong Maven. Nó thường có một cách mặc định để làm mỗi điều, và sau đó bạn có thể móc vào và ghi đè lên nếu bạn muốn làm một cái gì đó đặc biệt. Đôi khi phải mất rất nhiều Stack Overflowing và đầu gãi để tìm ra nó.

Thậm chí còn có số JFlex Maven plugin chính thức.

Bất cứ khi nào có thể, hãy tìm người đã tạo plugin Maven làm những gì bạn muốn. Ngay cả khi nó không phải là 100% đúng, nó có thể ít nhất là cung cấp cho bạn một ý tưởng về làm thế nào để làm cho maven làm điều gì đó.

cấu hình tối thiểu

Cấu hình này tạo ra mã java của một phân tích cú pháp cho tất cả các file ngữ pháp ( .jflex, * .jlex, * .lex, .flex) được tìm thấy trong src/main/jflex/và các thư mục con của nó. Tên và gói của mã nguồn Java được tạo ra là tên và gói được định nghĩa trong ngữ pháp. Mã nguồn Java được tạo ra được đặt trong target/generated-source/jflex, trong các thư mục con theo quy ước Java về tên gói. pom.xml

<project> 
    <!-- ... --> 
    <build> 
    <plugins> 
     <plugin> 
     <groupId>de.jflex</groupId> 
     <artifactId>jflex-maven-plugin</artifactId> 
     <version>1.6.0</version> 
     <executions> 
      <execution> 
      <goals> 
       <goal>generate</goal> 
      </goals> 
      </execution> 
     </executions> 
     </plugin> 
    </plugins> 
    <!-- ... --> 
    </build> 
    <!-- ... --> 
</project> 

này cảm thấy như cách maven để làm việc. Đặt công cụ của bạn vào đúng thư mục (src/main/flex) và plugin này sẽ tự động xây dựng nó vào dự án của bạn. Nếu bạn muốn do fancier custom stuff, there are some options. nhưng Maven là tất cả về việc ủng hộ quy ước về cấu hình.

+0

Rất hay, đó là mục tiêu thực hiện đã làm cho nó hoạt động. Tôi đoán tôi sẽ cần phải quay lại và xem chính xác những gì đã làm. Vì vậy, móc cho plugin là thêm một thực hiện và được chạy trong vòng đời? – dcolish

+0

Evenrything trong Maven là một plugin, ngay cả khi bạn không nhìn thấy nó. Đối với việc muốn thay đổi, bước đầu tiên là lấy một trong các plugin tích hợp và thay đổi cấu hình một chút ... Khi các plugin tích hợp không làm điều gì đó, bạn có thể đi xung quanh bằng các plugin của bên thứ ba. Nếu stll không may mắn, bạn có thể tự làm :) – bwawok

0

Thẳng thắn Tôi nghĩ rằng suy nghĩ hiện tại của bạn bản đồ tốt hơn nhiều so với kiến ​​so với con quạ, và tôi sẽ đề nghị bắt đầu với điều đó.

+0

Điều đó có nghĩa là Maven không có khả năng thêm các tác vụ xây dựng bổ sung để biên dịch? Tôi đoán tôi có thể đặt các bước xây dựng trong một tập tin kiến ​​và có mvn chỉ cần chạy đó. Tuy nhiên, giải pháp đó có vẻ hơi xấu xí. – dcolish

+0

Bạn có thể làm bất cứ điều gì trong Maven. Sẽ trả lời thêm trong một câu trả lời mới .. – bwawok

+0

Tôi đã không nói maven không thể làm điều đó. Tôi nói rằng suy nghĩ của bạn gần gũi hơn với kiến ​​(đến từ làm) hơn maven. –

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