2014-10-01 17 views
6

Tôi có một ứng dụng bao gồm nhiều dự án chiến tranh maven.Thử nghiệm tích hợp ứng dụng đa chiến tranh trong Spring Boot

Tôi có một dự án maven khác chạy thử nghiệm tích hợp JUnit dựa trên ứng dụng đa chiến dịch được triển khai bằng tay do tomcat triển khai bằng cách sử dụng các cuộc gọi org.springframework.web.client.RestTemplate.

Tuy nhiên, tôi muốn dự án thử nghiệm tích hợp của mình thực sự bắt đầu ứng dụng đa chiến dịch của tôi (một lần trong toàn bộ thời gian) trước khi chạy thử nghiệm ... trong khởi động mùa xuân!

Từ dự án thử nghiệm tích hợp của tôi, tôi muốn có thể chạy tất cả các dự án chiến tranh với nhau dưới dạng ứng dụng khởi động mùa xuân, mỗi dự án đều có contextPath riêng (ví dụ: localhost: 8080/a for project 'a', localhost : 8080/b cho dự án 'b', v.v.), và không thay đổi các dự án chiến tranh gốc (chưa được biết) khởi động mùa xuân). Nếu tôi không thể làm cho các dự án này chạy từ dự án thử nghiệm tích hợp của tôi trong khởi động mùa xuân mà không thay đổi chúng thì ít nhất tôi cũng muốn giảm thiểu việc sử dụng phụ thuộc khởi động và cấu hình trong các tệp chiến tranh đóng gói ... càng nhiều càng tốt .

Tôi đã có thể nhận dự án thử nghiệm tích hợp của mình phụ thuộc vào một dự án chiến tranh, khởi động và chạy thử nghiệm chống lại nó ... nhưng tôi đã không thành công khi nhận hai dự án chiến tranh chạy cùng nhau trong khởi động mùa xuân theo ngữ cảnh riêng biệt.

Bất kỳ đề xuất nào đều được hoan nghênh!

Dưới đây là một số các nguồn tài nguyên Tôi đã sử dụng để đặt này với nhau:

+2

tôi bối rối. Có vẻ như các cuộc chiến mà bạn đang cố gắng chạy không sử dụng Khởi động mùa xuân. Giả sử đó là chính xác, tại sao bạn đang cố gắng sử dụng Spring Boot để chạy chúng? Tôi cũng có thể hiểu lầm. Bạn có thể mở rộng một chút về những gì bạn đang cố gắng đạt được và tại sao bạn nghĩ Spring Boot sẽ giúp bạn đạt được nó? –

+0

Câu hỏi hay @AndyWilkinson. Bạn hoàn toàn đúng. Các cuộc chiến tranh không sử dụng khởi động mùa xuân và tôi không có kế hoạch để làm cho họ như vậy. Chúng sẽ được triển khai trong WebLogic để sản xuất. Tuy nhiên, tôi muốn chạy thử nghiệm tích hợp với một ứng dụng được triển khai đầy đủ (cả cục bộ và trong một xây dựng CI Jenkins) theo cách mà tôi không phải tự khởi động tất cả các cuộc chiến tranh trong tomcat trước ...thay vì một cái gì đó như 'thử nghiệm mvn'. Tôi nghĩ rằng khởi động mùa xuân có thể là một ứng cử viên tốt cho việc này. cái đó có giúp ích không? – sdoxsee

+3

Tôi không nghĩ Spring Boot là công cụ thích hợp cho công việc. Bạn không thể sử dụng plugin maven của Tomcat và cấu hình nó để triển khai nhiều ứng dụng web? Một cái gì đó như thế này: http://stackoverflow.com/a/13193937/1384297 –

Trả lời

6

Theo lời đề nghị của Andy, tôi đã đi với Plugin Tomcat7 Maven và nó hoạt động tốt. Jetty Maven Plugin là một tùy chọn khác (và tài liệu IMO tốt hơn) mặc dù tôi không thể tìm cách tránh phải cung cấp một "đường dẫn" cho các tệp WAR của tôi. Các Tomcat7 Maven Plugin, hãy để tôi tải lên WAR của tôi từ kho lưu trữ .m2 địa phương của tôi. Tôi cũng nên nói rằng các liên kết sau đây là hữu ích cũng ...

Dưới đây là một phần của hội nhập pom dự án thử nghiệm của tôi ...

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <version>2.17</version> 
      <configuration> 
       <skipTests>true</skipTests> 
      </configuration> 
     </plugin> 
     <plugin> 
      <artifactId>maven-failsafe-plugin</artifactId> 
      <version>2.17</version> 
      <configuration> 
       <includes> 
        <include>**/*Test*</include> 
       </includes> 
      </configuration> 
      <executions> 
       <execution> 
        <goals> 
         <goal>integration-test</goal> 
         <goal>verify</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.tomcat.maven</groupId> 
      <artifactId>tomcat7-maven-plugin</artifactId> 
      <version>2.2</version> 
      <configuration> 
       <path>/</path> 
       <webapps> 
        <webapp> 
         <groupId>com.mycompany</groupId> 
         <artifactId>app1</artifactId> 
         <version>${project.version}</version> 
         <type>war</type> 
         <asWebapp>true</asWebapp> 
        </webapp> 
        <webapp> 
         <groupId>com.mycompany</groupId> 
         <artifactId>app2</artifactId> 
         <version>${project.version}</version> 
         <type>war</type> 
         <asWebapp>true</asWebapp> 
        </webapp> 
       </webapps> 
      </configuration> 
      <executions> 
       <execution> 
        <id>start-tomcat</id> 
        <phase>pre-integration-test</phase> 
        <goals> 
         <goal>run-war</goal> 
        </goals> 
        <configuration> 
         <fork>true</fork> 
        </configuration> 
       </execution> 
       <execution> 
        <id>stop-tomcat</id> 
        <phase>post-integration-test</phase> 
        <goals> 
         <goal>shutdown</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 
+0

Có cách nào để ngăn chặn maven hoặc plugin tomcat tải các ứng dụng web nếu tôi chạy mvn clean install -DskipTests không? –

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