2011-08-05 36 views
16

Cao Cấp Mục tiêu: Tạo một Maven dự án ứng dụng Web duy nhất có thể được sử dụng một cách chính xác trong cả hai Netbeans và EclipseEclipse có thể nhập dự án Web Maven dưới dạng "Ứng dụng web động" không?

Khi chuyển đổi một dự án Maven với Eclipse, loại dự án dường như không được thiết lập để Dynamic Web ứng dụng khi sử dụng lệnh: mvn eclipse: eclipse -Dwtpversion = 2,0

trong Eclipse, nếu tạo ra một ứng dụng Web động, nhiều lựa chọn hơn được hiển thị trong Project Explorer, chẳng hạn như: JAX-WS Web Services, Trình mô tả triển khai, v.v. Đó là cấu trúc khung hoàn toàn khác.

enter image description here

Ngoài ra, sau khi chuyển đổi với Eclipse với lệnh trên, tôi có thể không phải là "Run" nó mặc dù đầu ra từ việc chuyển đổi nói: [INFO] Sử dụng như máy chủ WTP: Apache Tomcat v7.0 . Thay vì muốn chạy như một dịch vụ web, nó hỏi tôi xem đây có phải là Java Servlet, Applet, hoặc Unit test hay không.

enter image description here

Với Dynamic Web App (Eclipse mẹ đẻ), đây là những gì xuất hiện khi chạy dự án:

enter image description here

Có lẽ tôi đang đòi hỏi quá nhiều của Eclipse, và để có được chức năng ứng dụng web tích hợp, nó không thể đến từ Maven?

Có một cách khác tôi có thể thử. Tôi có thể tạo một ứng dụng web động trong Eclipse, sau đó nhấn "Convert to Maven". Lấy POM đó, sửa đổi, sau đó xem nếu netbeans cũng sẽ tải nó.

'pom.xml' My:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
<modelVersion>4.0.0</modelVersion> 

<groupId>com.voxel</groupId> 
<artifactId>servermap</artifactId> 
<version>1.0-SNAPSHOT</version> 
<packaging>war</packaging> 

<name>userprofile</name> 

<properties> 
    <endorsed.dir>${project.build.directory}/endorsed</endorsed.dir> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
</properties> 

<dependencies> 
    <dependency> 
     <groupId>javax</groupId> 
     <artifactId>javaee-web-api</artifactId> 
     <version>6.0</version> 
     <scope>provided</scope> 
    </dependency> 

    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>4.8.2</version> 
     <scope>test</scope> 
    </dependency> 

    <dependency> 
     <groupId>com.sun.jersey</groupId> 
     <artifactId>jersey-server</artifactId> 
     <version>1.8</version> 
    </dependency> 
    <dependency> 
     <groupId>com.sun.grizzly</groupId> 
     <artifactId>grizzly-servlet-webserver</artifactId> 
     <version>1.9.18-m</version> 
    </dependency> 
</dependencies> 

<repositories> 
    <repository> 
     <id>maven2-repository.dev.java.net</id> 
     <name>Java.net Repository for Maven</name> 
     <url>http://download.java.net/maven/2</url> 
    </repository> 
</repositories> 

Trả lời

15

Theo đề xuất của jhericks, nếu bạn sử dụng m2eclipse, bạn không cần phải sử dụng eclipse:eclipse goal. Những gì các eclipse:eclipse goal hiện cũng có thể được thực hiện bởi các m2eclipse.

Để chuyển đổi một dự án để các ứng dụng Web động, bạn có thể cấu hình các Project Facets tùy chọn trong thuộc dự án của bạn

enter image description here

+0

Điều này dường như về cơ bản những gì tôi đã bỏ lỡ. Khái niệm về các khía cạnh dự án. Tôi vẫn còn rất nhiều việc phải làm để tinh chỉnh điều này để làm việc trên Eclipse + Netbeans + IntelliJ, nhưng điều này khiến tôi vượt qua vấn đề chính mà tôi gặp phải :) – jsidlosky

+1

Hmm ... Khi tôi nhập mô-đun Maven của mình, thì Project Facet này sẽ tự động được thiết lập cho tôi, vì vậy tôi không biết có gì khác biệt giữa tôi và @jsidlosky. – jhericks

+0

Một bước bị thiếu: Sau khi thêm phần tử 'Dynamic Web Module', làm thế nào để yêu cầu Eclipse sử dụng' src/main/webapp' thay vì thư mục 'WebContent' thông thường của nó? –

3

Tôi đã có may mắn hơn với các m2eclipse plugin từ Sonatype. Khi tôi bắt đầu, tôi đã phạm sai lầm khi cố gắng sử dụng cả hai hình ảnh và nhật thực: mục tiêu nhật thực. Họ không làm chính xác điều tương tự, vì vậy nếu bạn cài đặt các plugin, ngừng làm mvn eclipse: eclipse. Dù sao, nó đã làm việc rất tốt cho tôi với các dự án web duy nhất và rất tốt với các dự án phong cách phản ứng đa dự án là tốt.

Vấn đề duy nhất tôi gặp phải là cố gắng triển khai tệp chiến dịch đến máy chủ được định cấu hình trong nhật thực nếu tệp chiến tranh đó được tạo bằng lớp phủ, nhưng điều đó dường như không phải là vấn đề cho bạn.

+0

Tôi đã sử dụng phương pháp nhập plugin m2eclipse và có vẻ tốt hơn với mvn eclipse: eclipse method! Vì vậy, cảm ơn bạn vì điều đó. Tuy nhiên, nó vẫn không phải là một "Ứng dụng web động" từ quan điểm của Eclipse. Tôi nhận ra có lẽ tôi đang hỏi quá nhiều, nhưng tôi nghĩ rằng nó có thể là có thể. Tôi đã cập nhật bài đăng của mình lên trên cùng với các ảnh chụp màn hình để làm rõ hơn. Cảm ơn ngài. – jsidlosky

+0

Khi tôi làm điều đó trên dự án của tôi nó hoạt động. Tôi có tùy chọn chạy trên máy chủ cho các ứng dụng web của tôi (và nó thực sự sẽ khởi động nó trên máy chủ của tôi). Tôi không chắc chắn điều ma thuật mà nó đang xem xét trong dự án của tôi để làm cho nó hoạt động, mặc dù. Một điều bạn có thể thử là đảm bảo rằng không có tệp .project nào khi bạn thực hiện việc nhập. Ngoài ra, tôi không thể nói từ ảnh chụp màn hình của bạn nhưng tôi giả sử bạn có một thư mục src/main/webapp/WEB-INF. Nếu không, đó có thể là nó. Một điều cuối cùng cần thử - nhấp chuột phải vào dự án, chọn Maven và sau đó chọn Cập nhật cấu hình dự án. Sau đó, tôi hết ý tưởng. – jhericks

+0

Tôi đã thử điều này và khi thực hiện "Chạy trên máy chủ", tôi nhận được 'Tài liệu cơ bản /home/nico/eclipse-workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/MyWebapp không tồn tại hoặc không phải là thư mục có thể đọc được ' –

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