2010-06-18 26 views
19

Tôi đang cố gắng tìm ra cách sử dụng Maven và tôi có nhiều bài viết mô tả các tính năng và sử dụng của nó. Nhưng tôi không thể hiểu được việc sử dụng Maven thực tế từ quan điểm năng suất.Cách sử dụng Maven trong Dự án Java của tôi và Tại sao?

Từ những gì tôi đã sử dụng trong các dự án trường học của chúng tôi chỉ là tạo một dự án Java mới trong Eclipse, viết Mã của bạn, tạo một .war (nếu dựa trên web) và dán mã vào thư mục webapps của Tomcat và bắt đầu máy chủ!

Vì vậy,

  1. đâu Maven đi vào bức tranh? Tôi đã sử dụng Ant và tôi hiểu kiến ​​lợi ích của một quá trình xây dựng tiêu chuẩn hóa. Nhưng tại sao chúng ta cần một Ant tiên tiến dưới hình thức Maven?

  2. Trong mọi trường hợp, tôi cần phải sử dụng nó, vì vậy nơi nào để bắt đầu - dòng chảy cơ bản, một số hướng dẫn tốt?

Cảm ơn

+5

Ant không phải là quá trình xây dựng tiêu chuẩn hóa. Đó là nhiều hơn của một "làm bất cứ điều gì bạn muốn với bất cứ cấu trúc bạn muốn" xây dựng quá trình. – ColinD

Trả lời

14

Maven được sử dụng để quản lý các quá trình xây dựng, thử nghiệm và triển khai. Nó có thể tách các bài kiểm tra đơn vị và kiểm tra tích hợp để bạn chỉ chạy chúng khi cần thiết và cắt giảm thời gian xây dựng.

Nó cũng là một người quản lý phụ thuộc, có nghĩa là khi bạn nhận ra những mảnh máy chủ của dự án của bạn cần apache commons-logging 1.0.4 nhưng những mâu thuẫn khách hàng với bất cứ điều gì trong quá khứ 0.7.9, bạn chỉ có thể thêm một vài dòng để các pom.xml file tương ứng, và Maven xử lý tất cả điều đó (tải xuống, cài đặt và theo dõi các phiên bản khác nhau của những phụ thuộc đó).

Tôi không phải là một tín đồ trước khi nhiệm vụ hiện tại của tôi, nhưng sau 2 năm sử dụng nó cho các ứng dụng doanh nghiệp lớn, chắc chắn tôi tôn trọng những gì Maven mang đến cho bảng. Có rất nhiều tài nguyên trực tuyến nhưng nếu bạn định dẫn đầu về điều này và thực sự cảm thấy không thoải mái, tôi khuyên bạn nên có một cuốn sách - the O'Reilly one là hữu ích.


Quên đề cập đến có một plugin Eclipse làm cho nó gần như không đau để sử dụng với Eclipse: m2Eclipse.


cập nhật Thứ hai ví dụ pom.xml phân đoạn để trả lời OP câu hỏi:

bạn pom.xml sẽ chứa mã XML như:

<dependencies> 
    <dependency> 
     <groupId>commons-logging</groupId> 
     <artifactId>commons-logging</artifactId> 
     <version>1.0.4</version> 
     <scope>provided</scope> 
    </dependency> 
</dependencies> 

Đây là tải về từ kho Maven trung ương (google "maven nexus ") hoặc bạn có thể cấu hình các kho lưu trữ bổ sung của riêng bạn (như cho các dự án của riêng bạn, hoặc nếu bạn không kết nối Internet).

+0

Vì vậy, maven sẽ tải xuống và cài đặt các tệp jar được yêu cầu có tên trong phần phụ thuộc? Làm sao? – zengr

+0

+1 cho m2eclipse – stacker

+0

@zengr, nó tải chúng xuống một "kho lưu trữ" cục bộ (bộ nhớ cache) và bao gồm các JAR từ repo trên đường dẫn lớp khi chạy thử nghiệm, biên dịch, v.v. Khi đóng gói .war chẳng hạn, các JAR sau đó được đóng gói vào .war. –

3

Free books about Maven có thể được tải về từ Sonatype (nơi các nhà phát triển ban đầu của Maven đến từ).

Ngoài ra hãy xem tài liệu trên trang web Apache Maven.

+0

Liên kết dường như bị hỏng. Liên kết mới có thể trông giống như [this] (http://www.sonatype.com/resources/books). – Pshemo

1

đâu Maven đi vào bức tranh?Tôi đã sử dụng Ant và tôi hiểu Ants lợi ích của quy trình xây dựng được chuẩn hóa . Nhưng tại sao chúng ta cần một Ant tiên tiến Ant dưới dạng Maven?

  • Maven giới thiệu "ước về cấu hình" này sẽ giúp nếu một số đồng nghiệp viết scipts kiến ​​lớn hơn mã. cộng với quản lý phụ thuộc, rắc rối duy nhất là chuyển đổi các dự án nguyên khối với nhiều hiện vật.

Trong mọi trường hợp, tôi cần phải sử dụng nó, vì vậy nơi nào để bắt đầu - dòng chảy cơ bản, số hướng dẫn tốt?

hữu ích.

5

Tôi đã có chính xác nhận thức tương tự như bạn và trong nhiều năm tôi đã tránh Maven.

Điều này cho phép bạn dễ dàng có được các lọ cần thiết mà ứng dụng của bạn có thể cần (được gọi là phụ thuộc - lọ và các thứ khác -). Vì vậy, lần sau khi ai đó khác chạy dự án của bạn, anh ấy sẽ tự động nhận được các lọ.

Tôi biết đó là một chút khó khăn để nắm bắt, cho đến khi bạn làm việc với một dự án hiện có bằng cách sử dụng nó.

Ví dụ tôi đã tải xuống một dự án mã nguồn mở gần đây, phụ thuộc vào 10 hoặc 12 khác nhau trên các phiên bản jar khác nhau. Sau khi tải xuống mã nguồn và thực thi Maven, tất cả các lọ đó (và nhiều thứ khác) đã được tải xuống cho tôi.

Vấn đề với Maven (như một người bạn của tôi đã nói với tôi) là để thực hiện chương trình "Xin chào thế giới", nó đầu tiên tải thế giới để chào đón anh ấy. : P

+0

cảm ơn bạn đã chia sẻ điểm kinh nghiệm :) – zengr

+0

:) Bạn được chào đón. BTW, tôi đã cố gắng để có được tất cả tài liệu, hướng dẫn và mọi thứ, nhưng không có gì có ý nghĩa hơn khi chỉ chạy nó, sau đó mọi thứ bắt đầu có ý nghĩa. – OscarRyz

0

Netbeans mới nhất cũng có tích hợp maven khá tốt.

0

Nếu bạn đang ở trong một tổ chức, hãy thử xây dựng một proxy lưu trữ maven. Artifactory là một lựa chọn tốt.

4

cho tất cả những người tự hỏi nơi maven tải xuống các lọ phụ thuộc, hãy kiểm tra thư mục có tên .m2 trong thư mục gốc của người dùng. ví dụ. đối với tôi, đó là c: \ documentsand settings \ myUserName.m2 \

tôi cũng đã nghiên cứu một chút về maven và tôi đã thực hiện một số scribbling nhỏ như nhắc nhở. Nếu nó là giá trị một đọc rồi đây nó là ::

/* mvn tạo mvn cài đặt tải tất cả các lọ cần thiết kiểm tra mvn kiểm tra các ứng dụng làm ... trang web mvn xây dựng trang web tải phụ thuộc

để triển khai trang web, chúng tôi cần khai báo một vị trí để phân phối trong tệp pom.xml của bạn, tương tự như kho lưu trữ để triển khai. ... website scp: //www.mycompany.com/www/docs/project/ ...

mvn trang web triển khai triển khai trang web

làm thế nào để xây dựng cấu trúc của trang web: file site.xml được sử dụng để mô tả cách bố trí của trang web, và thay thế các tập tin được sử dụng trong navigation.xml Maven

Một mẫu được đưa ra dưới đây:

Maven http://maven.apache.org/images/apache-maven-project.png http://maven.apache.org/ http://maven.apache.org/ images/maven-small.gif

<menu name="Maven 2.0"> 
    <item name="Introduction" href="index.html"/> 
    <item name="Download" href="download.html"/> 
    <item name="Release Notes" href="release-notes.html" /> 
    <item name="General Information" href="about.html"/> 
    <item name="For Maven 1.x Users" href="maven1.html"/> 
    <item name="Road Map" href="roadmap.html" /> 
</menu> 

<menu ref="reports"/> 

... 

Vì vậy, có hiệu lực, chúng ta cần liên kết html của chúng tôi với định dạng cấu trúc này để bố cục trang web cũng để chúng tôi thêm bất kỳ css mới hoặc các công cụ như vậy, tất cả những gì chúng ta cần làm là đưa chúng vào phần tài nguyên của thư mục src

sau đó chúng ta có thể tạo ra một tập tin chiến tranh của dự án của chúng tôi và đặt nó trong thư mục httpd của apache hoặc như thư mục tương tự ofour web server

trong trường hợp chúng ta cần phải tạo ra các dự án, chúng ta cần thêm một vài dòng mã vào tệp pom.xml của chúng tôi và đó là: ... org.apache .maven.plugins maven-dự án-info-báo cáo-plugin 2.0.1 ...

cũng có, mô tả trang web phải được đặt trong site.xml

các chi tiết có thể thấy trong tài liệu của maven

cấu trúc maven với tầm quan trọng của họ:

dự án/ pom.xml - Định nghĩa dự án src/ main/ java/- Chứa tất cả mã java sẽ xuất hiện trong phần tạo tác cuối cùng của bạn.
Xem maven-compiler-plugin để biết chi tiết scala/- Chứa tất cả mã scala sẽ xuất hiện trong phần tạo tác cuối cùng của bạn. //// không cần thiết cho dự án hiện tại của chúng tôi kể từ ngày Xem maven-scala-plugin để biết chi tiết tài nguyên/- Chứa tất cả các tệp tĩnh có sẵn trên đường dẫn lớp trong tạo phẩm cuối cùng. Xem maven-resources-plugin để biết chi tiết webapp/- Chứa tất cả nội dung cho một ứng dụng web (jsps, css, hình ảnh, v.v.)
Xem maven-war-plugin để biết chi tiết trang web/- Chứa tất cả các tệp apt hoặc xdoc được sử dụng để tạo trang web dự án.
Xem maven-site-plugin để biết chi tiết
kiểm tra/ java/- Chứa tất cả mã java được sử dụng để thử nghiệm.
Xem maven-compiler-plugin để biết chi tiết scala/- Chứa tất cả mã scala được sử dụng để thử nghiệm.
Xem maven-scala-plugin để biết chi tiết tài nguyên/- Chứa tất cả nội dung tĩnh sẽ có sẵn trên đường dẫn lớp học trong khi thử nghiệm. Xem maven-nguồn-plugin để biết chi tiết

mvn xác nhận này sẽ xác nhận rằng tất cả các phụ thuộc rất hài lòng và không có gì là mất tích mvn biên dịch này sẽ lập dự án mvn xác minh kiểm tra xem gói là hợp lệ hay không cũng trong dự án, sự phụ thuộc đang được chèn vào file xml

ví dụ tiêm phụ thuộc được đưa ra dưới đây :: org.scala-lang scala-thư viện 2.7.2-RC2 junit junit 3.8.1 kiểm tra

Mỗi phụ thuộc bao gồm một số hạng mục:

* groupId - The group of the dependency to rely on 
* artifactId - The artifact in the group to rely on 
* version - The version of the dependency to rely on 
* scope - The "scope" of the dependency. Defaults to compile (more details later) 
* packaging - The packaging for the dependency. Defaults to jar (e.g. jar, war, ear) 

Bạn có thể tích hợp các trang tĩnh của bạn bằng cách làm theo các bước sau:

* Put your static pages in the resources directory, ${basedir}/src/site/resources 
* Create your site.xml and put it in ${basedir}/src/site 
* Link to the static pages by modifying the menu section, create items and map them to the filenames of the static pages 

mvn tomcat: depl oy để triển khai lên tomcat hoặc apache, bạn có thể sử dụng lệnh này

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