簡體   English   中英

使用Spring Boot Maven項目作為依賴項

[英]Using a Spring boot maven project as a dependency

這似乎是一個微不足道的問題,但是我花了幾個小時試圖解決這個問題,所以我很樂意為正在發生的事情提供任何幫助和見解。

我在Eclipse中有兩個Spring-boot Maven項目。 我們稱它們為ProjectAProjectB 我需要在ProjectB中使用來自ProjectA的一個類(POJO)。 這意味着ProjectA是ProjectB的依賴項。

我將此依賴項放入ProjectB的pom.xml中:

    <dependency>
        <groupId>cz.my.project</groupId>
        <artifactId>ProjectA</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </dependency>

在Eclipse中,一切似乎都很好,但是當我使用ProjectB啟動Tomcat時,會遇到各種各樣的異常(取決於我為此依賴性設置的范圍)。

我或者試圖從ProjectA中獲取要使用的類的ClassNotFound異常,或者得到以下錯誤:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'flywayInitializer' defined in class path resource [org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration$FlywayConfiguration.class]: Invocation of init method failed; nested exception is org.flywaydb.core.api.FlywayException: Unable to scan for SQL migrations in location: classpath:db/migration

ProjectA包含一個Flyway,其中包含一些遷移腳本,這些腳本以某種方式在ProjectB中執行(即使ProjectB不包含任何Flyway內容)。

運行maven編譯時,出現以下異常(它搜索中央存儲庫而不是本地存儲庫):

Could not resolve dependencies for project cz.ProjectA.MyPOJO-service:war:0.0.1: Could not find artifact cz.ProjectA:jar:0.0.1 in central (http://repo.maven.apache.org/maven2)

誰能幫助我解決這個問題? 我嘗試了各種方法:手動將projectA放在類路徑上,在ProjectA上運行maven install,將這兩個項目放在相同的工作集中,等等。到目前為止,什么都沒用。

如果您以這種方式導入Spring Boot項目,那么您將導入所有@Configuration類,Spring Boot將對其中的所有內容進行掃描,以自動將其連接起來。

解決此問題的最佳方法是創建一個單獨的項目,其中包含兩個項目都將使用的類並將其導入。

但是,可以通過幾種方法來使此工作正常進行。

首先,雖然我不確定Flyway的配置方式,但是如果在您的@Configuration類之一中完成@Configuration ,則可以使用@Profile("flyway")注釋該配置。 這樣,如果項目需要運行Flyway遷移,則可以激活配置文件。 否則,Flyway不會被激活。

其次,如果自動配置不在您的項目中(如許多Spring Boot Starter依賴項中所述),則可以通過將其放入您的Spring Boot應用程序類中來排除@Configuration類自動連接Flyway的方法(嗯...任何@Configuration真的):

@EnableAutoConfiguration(exclude = { FlywayConfiguration.class })

...其中FlywayConfiguration.class是執行自動FlywayConfiguration.class的類,無論是在您的項目中還是在導入的第三方庫中。 我有時會用它來禁用測試的安全自動配置。

我相信還有更多選擇,但我認為這些是您最好的選擇。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM