2013-01-14 29 views
5

Tôi đang cố gắng tạo một dự án cơ sở đơn giản để triển khai dịch vụ tôi sử dụng thư viện Jax-RS cho không gian đám mây của ứng dụng Google của tôi. Vấn đề là tôi không biết làm thế nào để cấu hình các plugin đúng cách để không tiếp tục tìm đến một thư mục webapp dưới thư mục đích. Cấu trúc của dự án Jax-rs đặt tệp web.xml và tất cả các tệp WEB-INF khác trong thư mục tài nguyên thay vì thư mục webapp. Có cách nào để cấu hình các plugin maven để triển khai của tôi đã được xây dựng và nén lên chiến tranh tập tin?Sử dụng plugin google appengine maven để triển khai chiến dịch Jax-RS

Đây là lỗi tôi thấy

[INFO] Cập nhật Google App Engine Application Không thể tìm ra webapp thư mục C: \ dev \ gameTrunk \ server \ mục tiêu \ HOMMTG-server-1.0 sử dụng: AppCfg [tùy chọn] [] []

Hành động phải là một trong: trợ giúp: In trợ giúp cho một hành động cụ thể.
download_app: Tải xuống phiên bản ứng dụng đã tải lên trước đó.
request_logs: Viết nhật ký yêu cầu ở định dạng nhật ký chung của Apache.
rollback: Rollback bản cập nhật đang diễn ra. bắt đầu: Bắt đầu phiên bản máy chủ được chỉ định.

và nó đi vào với tất cả các mục tiêu appengine plugin ...

Đây là pom tôi

<plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <version>2.5.1</version> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <configuration> 
       <source>1.6</source> 
       <target>1.6</target> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-war-plugin</artifactId> 
      <version>2.3</version> 
      <configuration> 
       <archiveClasses>true</archiveClasses> 
       <webResources> 
        <!-- in order to interpolate version from pom into appengine-web.xml --> 
        <resource> 
         <directory>${basedir}/src/main/resources/WEB-INF</directory> 
         <filtering>true</filtering> 
         <targetPath>WEB-INF</targetPath> 
        </resource> 
       </webResources> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>com.google.appengine</groupId> 
      <artifactId>appengine-maven-plugin</artifactId> 
      <version>${appengine.target.version}</version> 
     </plugin> 
    </plugins> 

Thats chỉ là plugin phần nhưng hầu như nó chính xác giống như ví dụ dự án sổ lưu bút ngoại trừ đường dẫn cho thư mục WEB-INF

Trả lời

1

(Hướng dẫn bên dưới áp dụng cho maven-gae-plugin, không phải appengine-maven-plugin. Tôi đã nói với bạn bao nhiêu Google chưa ? Ucks trong mã nguồn mở ngày nay)

Tôi nghĩ rằng bạn phải thêm vào của bạn maven-gae-cắm một tính chất gọi appDir trỏ đến thư mục webapp của bạn, như thế này:

<plugin> 
     <groupId>net.kindleit</groupId> 
     <artifactId>maven-gae-plugin</artifactId> 
     <configuration> 
      <appDir>PATH-TO-YOUR-BUILT-EXPLODED-WAR-PATH</appDir> 
     </configuration> 
    </plugin> 

Tuy nhiên, tôi phải nhấn mạnh rằng việc thay đổi đường dẫn trong Maven tạo ra kết quả không mong muốn (bạn đang trộn mã nguồn và mã đối tượng, tệp .ignore của bạn sẽ bị rối tung lên và những thứ lạ khác)

Lưu ý bạn CẦN CẦN chiến tranh chưa được giải nén của bạn ở đâu đó. Một cách để đạt được điều đó là tạo một dự án khác .war và sử dụng các phụ thuộc-giải nén vào nó. Xem http://maven.apache.org/plugins/maven-dependency-plugin/unpack-dependencies-mojo.html

(tham khảo: https://github.com/maven-gae-plugin/maven-gae-plugin/blob/master/maven-gae-plugin/src/main/java/net/kindleit/gae/EngineGoalBase.java)

(chỉ trong trường hợp, có một JAX-RS dựa dự án cho GAE Tôi đã viết một thời gian trước đây, và mở nó thấy https://github.com/ipeirotis/ReadabilityMetrics/ cho một cái nhìn tổng quan.)

+0

Hmm, tôi sẽ thử tùy chọn giải nén nếu đó là cách duy nhất để sử dụng plugin appengine-maven này. Bạn có biết nếu có một số tài liệu để mô tả các tùy chọn cấu hình plugin và những gì nó mong đợi/cần từ một bản phân phối để thực hiện công việc của nó? – Flostation

+0

@aldrinleal, bạn có chắc chắn appDir là cấu hình hợp lệ trong appengine-maven-plugin không? Tôi không thấy nó trong [nguồn thô] (http://code.google.com/p/appengine-maven-plugin/source/browse/src/main/java/com/google/appengine/AbstractAppCfgMojo.java). Lưu ý rằng nó là một tham số hợp lệ trong maven-gae-plugin khác với appengine-maven-plugin. – yorkw

+0

Đẹp nhất. Tôi không biết có một appengine-maven-plugin. Và bạn nói đúng - AppDir được mã hóa cứng (xem http://code.google.com/p/appengine-maven-plugin/source/browse/src/main/java/com/google/appengine/appcfg/Update.java) – aldrinleal

2

Hiện tại không có cách nào để định cấu hình plugin appengine-maven để sử dụng một thư mục khác cho nội dung chiến tranh. Nó sẽ là tốt nhất mặc dù để có thể tạo ra một xây dựng đa mô-đun, nơi một submodule chỉ được sử dụng maven-ant-plugin để lắp ráp các thư mục chiến tranh và sau đó chạy các plugin trên đó thay thế. Tôi không nghĩ rằng chúng tôi muốn làm cho cấu hình trong plugin, vì nó không thực sự phù hợp với các maven-war-plugin, và cấu hình đó sẽ làm cho nó khó khăn để thiết lập dự án của bạn để sử dụng maven-war-plugin liền mạch trong tương lai.

Cấu hình bạn hiện có cho plugin chiến dịch trong pom của bạn là không cần thiết trừ khi bạn muốn nội suy số phiên bản vào appengine-web.xml. Tôi rất vui được trợ giúp thiết lập pom của bạn để plugin Google App Engine Maven chính thức hoạt động chính xác cho bạn.

+0

Tôi không có tập tin pom của tôi trên máy này để cung cấp cho bạn, nhưng ý chính của dự án của tôi là tôi đang xây dựng một cuộc chiến với thư viện jax-rs sử dụng thư mục tài nguyên tiêu chuẩn để giữ tất cả các thư mục INF. Đầu ra của một dự án khác là tập tin chiến tranh. Tôi có một dự án riêng biệt chỉ để tải lên công cụ ứng dụng. Nhưng nó dường như không thể cấu hình để chỉ sử dụng chiến tranh mà tôi cung cấp. Nếu bạn có thể nghĩ ra một cách để làm điều này với một tập tin chiến tranh nén, tôi muốn được quan tâm nhưng nếu nó không thể tôi sẽ chỉ phát nổ nó như là một phần của xây dựng. Vấn đề của tôi sau đó trở thành, plugin công cụ ứng dụng cần phải hiển thị những gì? – Flostation

+1

Bạn sẽ cần phải phát nổ ngay bây giờ. Nghe có vẻ như chúng tôi có thể làm việc một chút về điều này mặc dù, hãy để tôi suy nghĩ qua nó. Tôi thấy một vài vấn đề đã đăng nhập vào dự án để làm cho trải nghiệm này tốt hơn. Tôi bị sa lầy vào một vài dự án khác vào lúc này, nhưng hãy để tôi xem tôi có thể làm gì. – MattStep

+0

Cảm ơn Matt! Bạn đá. – Flostation