2014-12-04 5 views
7

Projenin ana POM'u çocuklarından dolayı paketleme modu POM kullanıyorsa, Spring Boots Maven eklentisi komutunu spring-boot:run kullanmak mümkün mü?POM ambalajı ile İlkbahar Önyükleme Aracı


Ben Bahar Boot Veli modülün bir çocuk açmak var olan bir "ana" POM ile çoklu modül maven projesi var. Buna benzer bir şey:

<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> 

Bu, her çocuğun ebeveyn olarak kullandığı "ana" POM'umuzdur. Şimdi bu "ana" POM'un çalıştığı dizinden spring-boot:run komutunu gerçekleştirmek istiyoruz. Sorun şu ki, bu modül 1'den beri (bu Application sınıfının bulunduğu yer) POM'da yer alan ve bir modül olarak bahsedilen bir ClassNotFoundException üretir .

Tek bir modül maven projesi ve <packaging>jar</packaging>'u kullanarak, bu derleme ve Uygulama sınıfını çalıştırır, bu nedenle burada çalışmayan Spring-Boot değil.

Bu çalışmayı elde etmek için neyi değiştirmek zorundayım yoksa çoklu modül Maven projeleriyle uğraşırken spring-boot-maven-plugin eklentisini kullanmak mümkün değil mi?


Sidenote: My Uygulama sınıfı/Modül 1 sorusunu yanıtlama yüzden bunu unutmayın bağımlılıkları gibi diğer modüllere sahip. Bunu nasıl geliştireceğinize dair herhangi bir öneri çok takdir edilmektedir.

cevap

0

Bu, bildiğim kadarıyla mümkün değil, çünkü eklentinin çalışması için çalıştırılabilir bir jar gerektiriyor. spring-boot plugin hedefi "run" için

docs diyor ki:

Açıklama

çalıştırın yürütülebilir bir arşiv uygulaması

Packaging pom bir yürütülebilir oluşturmaz olduğunu. Sadece bir pom.xml üretecek. Sadece ambalaj pom ile olan bir modül için yaptığımız

: Gördüğünüz gibi

[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 

eserdir yüklemek ve yerel depo dağıtılan eser bakmak mvn çalışmasına

deneyin önyükleme-veli-0.0.1-SNAPSHOT.pom.


başlangıç ​​sınıf (ana sınıfı) sahip olan ve ambalaj kabı vardır module1 için POM eklenti-konfigürasyonuna koyarak deneyin. Yorumlarınız için

Düzenleme:

Yorumunuz size istemci tarafı Maven yüklemesi ile ilgili sorunlar olduğunu göstermektedir. this answer'a bir göz atın. Ve özellikle de @ChristianAchilli tarafından verilen cevap.

Bu sorunu, yerel repo'mdaki artifact dizini karşıdan yüklenemeyen dosyayı silerek gidermek için kullanıyorum. Bir dahaki sefere maven komutunu çalıştırıyorum, artifakt indirmesi tekrar tetikleniyor. Bu yüzden bir istemci tarafı ayarı olduğunu söyleyebilirim.

Yine, bu yardımcı olur umarız!

Thomas

+0

Önerdiğiniz gibi yapmaya çalıştım. Eklentiyi modül1 pompasına taşıma ama benim için çalışmıyor. Bu benim aldığım: '[ERROR] Proje uygulaması için hedef yürütülemedi: Proje için bağımlılıklar çözülemedi. Örnek: module1: jar: 0.1.0: com.example bulunamıyor: module2: jar: 0.1 Http://repo.spray.io adresindeki .0, yerel depoda önbelleğe alınmış, püskürtme-repo güncellemesi geçene veya güncellemeler zorlanana kadar çözünürlük tekrar denenmeyecektir -> [Yardım 1] ' – Martijn

+0

@MartijnRiemers, bkz. Cevap – thomas77

0

Bir modülün daha nereye yalnızca Uygulama içeride. Modülünüze bağımlılıklar eklerseniz, modülünüzü normal önyükleme ile başlatabilirsiniz: çalıştırma veya jar olarak dışa aktarma.

Ebeveyninizi yalnızca kapsayıcı olarak görün.

İşinize yarayacak umuyoruz