2014-12-04 19 views
7

Có thể sử dụng lệnh Spring Boots Maven plugin spring-boot:run khi POM mẹ của dự án đang sử dụng chế độ đóng gói POM vì con của nó?Khởi động mùa xuân với bao bì POM Agregator


Tôi có dự án mô-đun đa mô-đun với POM "chính" có trong đó là phiên bản con của mô-đun Spring Boot Parent. Có vẻ như thế này:

<modelVersion>4.0.0</modelVersion> 

    <groupId>com.example</groupId> 
    <artifactId>project</artifactId> 
    <packaging>pom</packaging> 
    <version>0.1.0</version> 

    <parent> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-parent</artifactId> 
     <version>1.2.0.BUILD-SNAPSHOT</version> 
     <relativePath/> 
    </parent> 

    <modules> 
     <module>module1</module> 
     <module>module2</module> 
     <module>module3</module> 
    </modules> 

    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <start-class>com.example.module1.Application</start-class> 
     <java.version>1.8</java.version> 
    </properties> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-maven-plugin</artifactId> 
      </plugin> 
     </plugins> 
    </build> 

Đây chính là POM "chính" của chúng tôi mà mọi trẻ em sử dụng làm cha mẹ. Bây giờ chúng ta muốn thực hiện lệnh spring-boot:run từ thư mục làm việc POM "chủ" này đang ở. Vấn đề là, điều này tạo ra một ClassNotFoundException là lẻ kể từ module1 (trong đó có Application lớp nằm) được bao gồm trong POM và được nhắc đến như một mô-đun .

Sử dụng một dự án mô-đun maven duy nhất và <packaging>jar</packaging> biên dịch này và chạy lớp Ứng dụng để khởi động không hoạt động ngay tại đây.

Tôi phải thay đổi điều gì để làm việc này hoặc đơn giản là không thể sử dụng plugin spring-boot-maven-plugin khi giao dịch với các dự án Maven nhiều mô-đun?


Sidenote: Lớp ứng dụng của tôi/Module 1 có các mô-đun khác làm phụ thuộc để ghi nhớ câu hỏi này. Bất kỳ đề xuất về cách cải thiện điều này đều rất được đánh giá cao.

Trả lời

0

Không thể, theo như tôi biết, vì plugin yêu cầu một bình thực thi để chạy.

Các tài liệu cho các spring-boot plugin mục tiêu "chạy" cho biết:

Mô tả

Chạy một ứng dụng lưu trữ thực thi

Bao bì pom là sẽ không tạo ra một thực thi. Nó sẽ chỉ tạo ra một tệp pom.xml.

Cố gắng chạy mvn cài đặt và xem xét các tạo tác triển khai tới kho lưu trữ địa phương của bạn:

tôi chỉ làm cho một module tôi có với bao bì pom:

[INFO] Installing C:\projects\boot-parent\pom.xml to 
C:\Users\...\repository\no\boot-parent\0.0.1-SNAPSHOT\boot-parent-0.0.1-SNAPSHOT.pom 

Như bạn thấy artifact là boot-parent-0.0.1-SNAPSHOT.pom.


Hãy thử đặt plugin-cấu hình trong pom cho module1 trong đó có sự khởi đầu-class (chính-class) và có jar bao bì.

Chỉnh sửa cho bình luận của bạn:

bình luận của bạn cho thấy rằng bạn có vấn đề với khách hàng cài đặt bên Maven của bạn. Hãy xem this answer. Và đặc biệt là câu trả lời được đưa ra bởi @ChristianAchilli.

Tôi sử dụng để giải quyết vấn đề này bằng cách xóa tương ứng không tải xuống thư mục tạo phẩm trong repo địa phương của tôi. Lần sau tôi chạy lệnh maven, phần tải xuống tạo tác được kích hoạt lần nữa. Vì vậy, tôi muốn nói đó là một thiết lập phía khách hàng.

Một lần nữa, hy vọng điều này sẽ hữu ích!

Thomas

+0

Tôi đã cố gắng thực hiện như bạn gợi ý. Di chuyển các plugin vào module1 pom nhưng điều đó không làm việc cho tôi. Đây là những gì tôi nhận được: '[ERROR] Không thể thực hiện mục tiêu trên ứng dụng dự án: Không thể giải quyết các phụ thuộc cho dự án com.example: module1: jar: 0.1.0: Không tìm thấy com.example: module2: jar: 0.1 .0 trong http://repo.spray.io được lưu trữ trong kho lưu trữ cục bộ, độ phân giải sẽ không được lặp lại cho đến khi khoảng thời gian cập nhật của repo phun đã trôi qua hoặc cập nhật bị buộc -> [Help 1] ' – Martijn

+0

@MartijnRiemers xem chỉnh sửa câu trả lời – thomas77

0

Tạo thêm một mô-đun chỉ ở bên trong Ứng dụng của bạn. Nếu bạn chèn phụ thuộc vào mô-đun của mình, bạn có thể bắt đầu mô-đun bình thường với khởi động mùa xuân: chạy hoặc xuất dưới dạng jar.

Chỉ xem phụ huynh của bạn là vùng chứa.

Hy vọng công việc đó dành cho bạn

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