2013-03-02 8 views
8

My gae + spring + maven dự án hoạt động hoàn hảo. Nhưng tôi không thể làm cho nó hoạt động bằng cách sử dụng eclipse.phụ thuộc maven mùa xuân-web không được xuất bản với nhật thực

Có vẻ như mùa xuân-web phụ thuộc khai báo trong pom.xml của tôiđang biến mất từ WEB-INF/lib khi tôi chạy dự án của tôi sử dụng GAE từ nhật thực (sử dụng Google Plugin, Run As > Ứng dụng web). Vì vậy mà không mùa xuân-web đây là ngoại lệ:

Could not instantiate listener org.springframework.web.context.ContextLoaderListener 
java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener 

(Full GAME stacktrace here)

Từ giao diện điều khiển, chạy mvn clean package gae:run, ứng dụng hoạt động như một nét duyên dáng và mùa xuân-web được đặt dưới Thư mục WEB-INF/lib như mong đợi.

Chỉ cần công bố dự án thử nghiệm của tôi tại BitBucket: https://bitbucket.org/jelies/gae-spring-maven

Bất cứ ý tưởng tại sao mùa xuân-web không được công bố để WEB-INF/lib khi khởi chạy ứng dụng web từ nhật thực?


Sử dụng:

  • SpringSource Toolsuite 3.1.0 (dựa trên eclipse 3.8)
  • Java 6
  • mùa xuân 3.2.1
  • Maven 3.0.4
  • Google App Engine 1.7.5
  • maven-gae-plugin 0.9.6

Cập nhật:mùa xuân-web phụ thuộc đã được công bố để WEB-INF/lib khi sử dụng phiên bản mùa xuân 3.1.4.RELEASE. Điều này không xảy ra với bất kỳ phiên bản 3.2.X nào.

+0

Bạn có chạy máy chủ dev với plugin m2eclipse và các mục tiêu giống như trên bảng điều khiển không? Hoặc bạn muốn khởi động máy chủ dev bằng plugin google (chạy dưới dạng ứng dụng web)? – Eich

+0

Tôi muốn khởi động máy chủ dev bằng plugin google, sử dụng "chạy dưới dạng -> ứng dụng web" như bạn đã nói. – jelies

+0

Bạn nên sử dụng plugin [m2eclipse] (http://www.sonatype.org/m2eclipse/) và khởi động máy chủ dev với maven. Maven sao chép mọi phụ thuộc (máy chủ) vào thư mục 'WEB-INF/lib'. 'Pom.xml' không ảnh hưởng đến plugin google (trong mọi trường hợp). Nếu bạn muốn chạy máy chủ bằng plugin google, bạn sẽ phải tự mình sao chép toàn bộ thư viện vào thư mục 'WEB-INF/lib'. Cần có thủ tục tương tự nếu bạn muốn triển khai dự án của mình bằng plugin google cho GAE. Vì vậy, theo ý kiến ​​của tôi thì tốt hơn (và dễ dàng hơn nhiều) để sử dụng maven trong cả hai trường hợp. Hay bạn thực sự cần plugin google? – Eich

Trả lời

0

Chắc chắn, mùa xuân 3.2.x với nhật thực và maven không hoạt động; spring-web không được xuất bản lên WEB-INF/lib khi khởi chạy ứng dụng từ Plugin Eclipse của Google.

Đã thử với mùa xuân 3.2.1 và 3.2.2. Nó chỉ làm việc cho tôi bằng cách sử dụng các phiên bản thấp hơn (bây giờ tôi đang sử dụng 3.1.4).

2

Added một vấn đề Jira cho vấn đề này với cấu hình của tôi (Eclipse 4.2, WS 7.0, mvn 3): https://jira.springsource.org/browse/SPR-10494

+0

Trong trường hợp của tôi, điều này xảy ra với Google App Engine thay vì WAS7, nhưng có thể có lỗi liên quan đến điều đó. Cảm ơn JIRA, tôi sẽ làm theo bất kỳ cập nhật nào ở đó. – jelies

1

Nếu bạn.tệp classpath có mục nhập <classpathentry kind="output" path="target/classes"/>, thử thay đổi nó thành thư mục WEB-INF/classes của bạn. Mỏ được thiết lập với tiêu chuẩn maven, vì vậy tôi đã đổi dòng này thành <classpathentry kind="output" path="src/main/webapp/WEB-INF/classes"/>. Điều này chỉ cố định các vấn đề của tôi (Eclipse Juno, WAS 7, không có cài đặt m2e).

Ngoài ra, trong trường hợp nó áp dụng cho người khác, tôi nên đề cập rằng với máy chủ của tôi (Websphere) Tôi đang chọn cài đặt xuất bản "Chạy máy chủ với tài nguyên trong không gian làm việc".

Vấn đề này cho thấy tôi thực sự chưa hiểu rõ về xuất bản của Eclipse, nhưng trước khi thay đổi đó khi tôi chọn cài đặt "trong không gian làm việc", nó thực sự đã xuất bản tài nguyên của tôi lên \ workspace.metadata.plugins \ org.eclipse.wst .server.core \ tmp0 và WEB-INF \ lib không chứa spring-web. Tuy nhiên, với thay đổi ở trên, tôi không còn thấy mã của mình được xuất bản cho thư mục đó nữa. Tôi không chắc chắn bây giờ chắc chắn như thế nào máy chủ của tôi là nhận được các nhị phân nó cần, nhưng nó xuất hiện để được làm việc.

Là một lưu ý phụ/tiền thưởng bổ sung (có thể hoàn toàn không liên quan), tôi không còn cần phải xuất bản để xem các cập nhật cho JSP của mình khi tôi thực hiện thay đổi cho chúng.

+0

Cảm ơn, tôi sẽ thử! – jelies

0

này cố định nó cho tôi:

  1. Tìm vị trí của lò xo web.jar này đã được bao gồm trong bạn ứng dụng web. Trong trường hợp của tôi, nó nằm trong user.m2 \ repository \ org \ springframework \ spring-web \ 4.1.6.RELEASE \ spring-web-4.1.6.RELEASE.jar
  2. Mở spring-web-4.1.6.RELEASE. jar en eg. 7zip
  3. Xóa tập tin này từ jar: META-INF \ web fragment.xml (trong 7zip kích chuột phải vào tập tin -> xóa)
  4. Đóng 7zip và chạy "Xuất bản" trên máy chủ trong Eclipse

Thông tin khác: https://jira.spring.io/browse/SPR-10494?focusedCommentId=94572&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-94572