2012-03-02 37 views
20

Tôi đang cố gắng thiết lập một dự án hello world cơ bản bằng cách sử dụng Eclipse Indigo và máy chủ Tomcat. Tôi tạo ra một dự án năng động với một servlet đơn giản. Kiểm tra servlet và làm việc tốt. Sau đó, tôi kích hoạt hỗ trợ Maven và thêm logback vào pom của tôi. Tôi đặt một tuyên bố khai thác gỗ trong phương thứccủa servlet. Khi chạy servlet, nó phàn nàn nó không thể tìm thấy bất kỳ ràng buộc nào vì các logback jars không được sao chép vào cá thể tomcat Eclipse. Tôi mong đợi để tìm các lọ được công bố ở đâu đó trong đây:WTP Eclipse không xuất bản phụ thuộc Maven

${workspace}\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\

Làm thế nào để tôi nhận được Eclipse để làm việc với WTP/Maven đúng cách? Tôi cũng đã thử cài đặt các kết nối m2e-wtp không có sự khác biệt.

Trả lời

48

Kiểm tra Triển khai hội (menu ngữ cảnh của dự án) thì phải có lập bản đồ Maven Dependencies -> WEB-INF/lib.

+0

Cảm ơn mẹo, cấu hình này được định cấu hình chính xác nhưng không hoạt động. Cuối cùng tôi phát hiện ra rằng việc tạo ra một dự án mới từ đầu làm việc. Trong trường hợp này, tôi đã tạo dự án và sau đó thêm trình kết nối WTP Maven và nó không cấu hình đúng dự án. – dcompiled

+2

Tôi đã có một chút vấn đề khác, nhưng điều này đã khắc phục nó. Tôi đã sử dụng Maven để xây dựng dự án của tôi có SNAPSHOTS trong đó. Ban đầu tôi đã bật Độ phân giải không gian làm việc và tắt tính năng này. Eclipse đã được cấu hình để vẫn sử dụng dự án cục bộ chứ không phải các ảnh chụp nhanh từ repo nexus của chúng ta. Tôi tiếp tục nhận được CNFEs và tìm thấy điều này mà chỉ cho tôi vấn đề của nó vẫn cố gắng giải quyết nó và không xuất bản nó. – bh5k

+0

điều này đã giúp tôi rất nhiều và trong trường hợp khác :) (tương tự) – Alex

13

Đến từ một nền ASP.NET, tôi thấy nó gây sốc bao nhiêu công việc cần thiết để có được một webapp chạy với Eclipse WTP và Maven đặc biệt là nếu bạn đang học một mình. Hy vọng rằng hướng dẫn bắt đầu nhanh này sẽ giúp người khác bắt kịp tốc độ nhanh chóng.

Có hai cách để có dự án hello world làm việc trong WTP Eclipse với Maven. Bạn có thể tạo một dự án web động và sau đó thêm tính chất Maven hoặc bạn có thể làm ngược lại.

Pre-kiện tiên quyết cho Eclipse với các trang web cập nhật

Startup cấu hình

  • Cài đặt bản sao của Tomcat 7 từ http://tomcat.apache.org/download-70.cgi

  • Window -> Preferences -> Server -> Runtime Environment

  • Thêm Apach e Tomcat 7.0 và chọn thư mục cài đặt cục bộ

Lựa chọn 1: Tạo Dynamic Web Project sau đó thêm Maven Nature

  • Tạo dự án Maven mới, chọn nguyên mẫu org.apache.maven.archetypes : maven-archetype-webapp

  • Thay đổi thành phối cảnh Java EE.

  • Tạo thư mục nguồn mới, src \ main \ java. Lưu ý rằng Eclipse không đủ thông minh để làm điều này cho bạn và thứ tự của các thư mục không chính xác. Thư mục src \ main \ java được liệt kê sau src \ main \ resources. Điều này có thể được khắc phục thủ công sau này trong thuộc tính dự án.

  • Tạo một servlet mới. Lưu ý cách Eclipse mặc định tệp này trong thư mục sai src \ main \ resources vì thứ tự sai. Thay vào đó, hãy chọn thủ công src \ main \ java. Thay đổi ánh xạ URL trên trang thứ hai của trình hướng dẫn thành/* để giúp thử nghiệm dễ dàng hơn.

  • Bây giờ servlet của chúng tôi đã sẵn sàng nhưng phụ thuộc vào api servlet không bị ràng buộc. A) chúng ta có thể thêm api servlet như là một sự phụ thuộc vào dự án của chúng ta hoặc B) chúng ta có thể ràng buộc với cấu hình máy chủ Eclipse cho Apache 7.0.

  • Đối với tùy chọn A, thêm sự phụ thuộc này để pom:

.

<dependency> 
    <groupId>org.apache.tomcat</groupId> 
    <artifactId>tomcat-api</artifactId> 
    <version>7.0.${set this}</version> 
    <scope>provided</scope> 
</dependency> 
  • Đối với tùy chọn B: tính

    • Project -> Java Build Path -> Thư viện -> Add Library -> Server Runtime -> Apache Tomcat 7.0
    • Nhấp chuột phải và chạy trên máy chủ:
  • Trang trống sẽ xuất hiện trong trình duyệt nội bộ như http://localhost:8080/ $ {a rtifact}

thử nghiệm phụ thuộc xuất bản:

  • Add Joda thời gian đến pom.

  • Thêm dòng này trong servlet đã tạo trước đó đối với phương pháp doGet và nhập khẩu các phụ thuộc cần thiết:

.

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    response.getWriter().println("The time is now: " + new DateTime().toString()); 
} 

Nạp lại trang kiểm tra và bây giờ sản lượng nên là:

Hiện tại là: 2012-03-03T14: 14: 29,890-05: 00

Bây giờ nếu bạn muốn chơi với Servlet 3.0 và chú thích này không được kích hoạt theo mặc định, vì lý do gì tôi không biết. Lực lượng đầu tiên Maven sử dụng Java 1.6 bằng cách thêm vào pom của bạn, nếu không mỗi lần bạn cập nhật pom của bạn, cấu hình sẽ hoàn nguyên về Java 1.5.

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>2.3.2</version> 
    <configuration> 
     <source>1.6</source> 
     <target>1.6</target> 
    </configuration> 
    </plugin> 

Mở thuộc tính dự án -> Project Facets. Thay đổi Phiên bản trong "Mô-đun web động" thành 3.0, thay đổi phiên bản java 1.6

Tạo một Servlet mới với tên lớp AnnotatedServlet trong src \ main \ java và lưu ý cách chú thích @WebServlet được tạo tự động.

Phương án 2: Tạo Dynamic Web Project sau đó thêm Maven Nature

  • Chọn Tomcat Runtime và Dynamic Mô-đun Phiên bản 3.0
  • Tạo thư mục nguồn src \ chính \ java
  • mục tiêu sản lượng Set default \ lớp học
  • Đặt thư mục ngữ cảnh src \ main \ webapp
  • Kiểm tra tạo web.xml
  • Tạo servlet với bản đồ/* để thử nghiệm nhanh chóng
  • Thêm một tuyên bố sản lượng cho phương thức doGet

response.getWriter().println("Another test");

  • Kích đúp vào "Triển khai mô tả" và thêm thuộc tính này vào thư mục gốc yếu tố web-app metadata-complete="false"

  • Dự án nhấp chuột phải và chọn Chạy dưới dạng -> Chạy trên máy chủ

  • dự án Nhấp chuột phải -> Configure -> Convert To dự án Maven
  • Chọn bao bì như chiến tranh
  • Sửa pom và thiết lập trình biên dịch sử dụng java 1.6 và thêm Joda thời gian phụ thuộc:

.

<dependencies> 
    <dependency> 
     <groupId>joda-time</groupId> 
     <artifactId>joda-time</artifactId> 
     <version>2.1</version> 
    </dependency> 
</dependencies> 

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>2.3.2</version> 
      <configuration> 
       <source>1.6</source> 
       <target>1.6</target> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 
+1

Mọi thứ có vẻ tốt hơn một chút trong những ngày này với các phiên bản nhật thực mới hơn (quy trình của tôi: tạo dự án maven mới, chọn web ứng dụng nguyên mẫu, thêm phụ thuộc maven vào hội đồng triển khai như được mô tả trong câu trả lời được chấp nhận ở đây, mà dường như thường làm việc), nhưng thực tế là câu hỏi này vẫn còn có liên quan cho thấy rằng nó vẫn không * hoàn hảo *. Nhưng không phải hệ thống ứng dụng web như nó tồn tại cũng không phải là maven thực sự được thiết kế với việc sử dụng các IDE trong tâm trí, đó có lẽ là lý do tại sao chúng ta có vấn đề như thế này. Trong khi mọi thứ trong .NET được thiết kế để tích hợp với VS độc đáo. –

0

Tôi gặp phải sự cố tương tự và mặc dù tôi đã định cấu hình Deployment Assembly đúng cách vẫn không hoạt động. Sau đó, tôi thấy rằng trong Window -> Preferences -> My Eclipse -> Java Enterprise Project -> Web Project, trong tab Deployment, việc quản lý các dự án phụ thuộc đã bị tắt. Tôi đã thay đổi nó để triển khai các lọ của các dự án phụ thuộc vào thư mục lib và sau đó mọi thứ hoạt động như một sự quyến rũ. Tôi thậm chí có thể tắt tùy chọn triển khai hội.

1

Nhấp chuột phải vào dự án web trong Project Explorer, sau đó chọn Maven -> Cập nhật dự án

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