2012-04-02 29 views
17

Tóm tắtEclipse + Maven + Dynamic Web Project -> Maven ghi đè Triển khai hội

Trong Eclipse, khi tôi "Maven-> Cập nhật Cấu hình dự án" "Maven Dependencies" sẽ bị xoá khỏi "Triển khai hội" của tôi dự án.

Chi tiết

tôi bắt đầu với một dự án được cấu hình sẵn Eclipse: File-> New-> Dynamic Web dự án-> JavaServer dự án Mặt v2.0. Để loại bỏ "ma thuật", tôi chuyển nó thành một dự án Maven: Configure-> Convert to Maven project.

pom.xml chứa sau:

<build> 
    <finalName>jsf-facelets-tutorial</finalName> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-war-plugin</artifactId> 
      <configuration> 
       <webXml>WebContent/WEB-INF/web.xml</webXml> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <configuration> 
       <source>1.6</source> 
       <target>1.6</target> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 
<dependencies> 
    <dependency> 
     <groupId>javax.el</groupId> 
     <artifactId>el-api</artifactId> 
     <version>1.0</version> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>4.0</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.myfaces.core</groupId> 
     <artifactId>myfaces-api</artifactId> 
     <version>2.0.5</version> 
     <scope>compile</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.myfaces.core</groupId> 
     <artifactId>myfaces-impl</artifactId> 
     <version>2.0.5</version> 
     <scope>runtime</scope> 
    </dependency> 
</dependencies> 

Sau đó, để đảm bảo sự phụ thuộc Maven được sao chép vào "WEB-INF/lib /" trước khi triển khai, tôi đã thêm họ "Triển khai hội của dự án ": Thuộc tính dự án-> Triển khai hội. Để biết thêm chi tiết, hãy xem câu hỏi này: Eclipse + Maven + JavaServer Faces -> ClassNotFoundException: StartupServletContextListener.

Tôi biết có hai vấn đề liên quan.

vấn đề

(1) Khi tôi "dự án-> Maven-> Cập nhật Cấu hình dự án", "Maven Dependencies" sẽ bị gỡ khỏi tôi "Triển khai hội". Có cách nào để ngăn chặn điều này xảy ra, có thể thông qua một số plugin Maven?

(2) Khi tôi xây dựng .war từ bên trong Eclipse mọi thứ đều ổn, .war chạy tốt trong Tomcat. Nhưng khi tôi xây dựng nó từ dòng lệnh với Maven, mvn clean compile war:war, các tệp .html từ "WebContent /" không được thêm vào .war. Một lần nữa, tôi cần khắc phục cài đặt/plugin nào của Maven?

FYI, đây là một ứng dụng rất cơ bản ... chỉ là trang đăng nhập và trang chào mừng.

Nếu có bất kỳ chi tiết bổ sung nào tôi nên cung cấp (web.xml, faces-config-xml, login.xhtml), hãy cho tôi biết và tôi sẽ thêm chúng.

Cảm ơn

--EDIT--

Eclipse phiên bản: 3.6.2

Eclipse M2E phiên bản: 1.0.1

Apache Maven phiên bản: 2.2.1

(1) Giải pháp

Cập nhật lên Eclipse Java EE 3.7.2 (Indigo). Bây giờ cũng sử dụng m2e-wtp Maven Integration for Eclipse WTP plugin

(2) Giải pháp

Tạo dự án Maven mới từ archetype, sau đó Eclipse-> Xuất nhập> Hiện có dự án Maven.Với phiên bản mới của Eclipse và M2E-WTP, phối cảnh Java EE trong Eclipse hoạt động tốt với các tiêu chuẩn Maven cấu trúc thư mục

Các pom.xml bây giờ là đơn giản quá:

<build> 
    <finalName>jsf-facelets-tutorial</finalName> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-war-plugin</artifactId> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <configuration> 
       <source>1.6</source> 
       <target>1.6</target> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 
<dependencies> 
    <dependency> 
     <groupId>javax.el</groupId> 
     <artifactId>el-api</artifactId> 
     <version>1.0</version> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>4.0</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.myfaces.core</groupId> 
     <artifactId>myfaces-api</artifactId> 
     <version>2.0.5</version> 
     <scope>compile</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.myfaces.core</groupId> 
     <artifactId>myfaces-impl</artifactId> 
     <version>2.0.5</version> 
     <scope>runtime</scope> 
    </dependency> 
</dependencies> 
+0

Bạn đang sử dụng phiên bản Eclipse và M2Eclipse nào? – nwinkler

+0

Phiên bản Eclipse: 3.6.2 Phiên bản Eclipse m2e: 1.0.1 Phiên bản Apache Maven: 2.2.1 –

+0

Tôi đã cập nhật câu trả lời của mình để giải quyết câu hỏi của bạn liên quan đến thư mục WebContent. – nwinkler

Trả lời

4

tôi sẽ khuyên bạn nên chuyển sang Eclipse 3.7.x (Indigo), có hỗ trợ tốt hơn cho m2e và cũng cho phép bạn sử dụng Tích hợp Maven cho WTP (cài đặt riêng), điều này sẽ giúp mọi thứ trở nên dễ dàng hơn nhiều. Tôi đoán hầu hết các vấn đề của bạn nên được giải quyết bằng cách cập nhật cho Indigo.

Install Link: http://marketplace.eclipse.org/node/96737

Xem thêm ở đây: Maven/Tomcat Projects In Eclipse Indigo/3.7

Sửa Đưa tài nguyên web của bạn dưới WebContent và sau đó thêm rằng khi một thư mục trong các plugin WAR có thể là một giải pháp. Cách sạch sẽ là để có chúng dưới src/main/resources hoặc src/main/webapp và chúng sẽ được bao gồm tự động trong tệp WAR. WebContent không phải là một trong những thư mục chuẩn của Maven.

+0

Cảm ơn, sẽ thử và liên hệ lại với bạn khi tôi hoàn thành (sẽ mất một chút thời gian để tải xuống và cài đặt mọi thứ, sau đó bắt đầu dự án mới). Một câu hỏi, với plugin "m2eclipse-wtp", tôi vẫn cần sử dụng plugin xây dựng-helper-maven (trình cắm Maven) và trình kết nối m2e-build-helper (Eclipse) không? –

+0

Tôi phải thú nhận rằng tôi không quen thuộc với hai điều này ... – nwinkler

+0

Cài đặt ngay bây giờ. Với cấu hình mới này, bạn nên giới thiệu phương pháp tạo dự án nào? maven dòng lệnh từ nguyên mẫu, hoặc sử dụng thuật sĩ Eclipse? –

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