A. Maven模塊化開發,spring無法注入其它模塊中的介面
1、使用Maven構建模塊化項目,分為web,service,模塊,web依賴service,service依賴模塊
2、在web模塊中可以引用service模塊的中介面或者類,但是無法注入(可以確定:spring的配置文件掃描包路徑是沒有問題的)。
3、
B. 北大青鳥設計培訓:Maven多模塊項目構建
在日常開發中經常會遇見多模塊項目的構建,很多初學者者這個概念的項目構建比較模糊。
那麼接下來沈陽電腦培訓http://www.kmbdqn.cn/一起構建多模塊的項目。
在創建的多模塊的項目時候,我們要明確一個點,創建多模塊的項目每一個項目都一個父類模塊去管理多個子模塊的項目。
第一步:創建一個parent模塊【新建一個maven項目】第二步:創建子模塊【更具需要的類型選擇】第三步:創建成功過後如果有多個模塊依次安裝上述的步驟繼續創建更多的模塊即可當多模塊項目構建成功後,我們可以父模塊中的pom.xml查看到依賴的關系
C. maven寫web項目時,多模塊怎麼用呀
你的service作為一個模塊以後就相當於外部依賴,controller可以引用啊。service本來就是一個bean,你可以當作正常引用service的方法,這個方法可以通過註解引用或者配置裡面的<bean>來引用
D. 如何使用eclipse創建Maven工程及其子模塊
1,首先創建一個父類工程 子模塊繼承父類工程 並在父類工程的pom.xml文件中定義引入的jar及其版本號 子模塊可以引用
2 創建api子模塊,主要放置SDK
3 創建server 子模塊 主要存放配置文件 不包括源代碼
創建工程完成
創建支持eclipse的多模塊maven項目
通過maven可以創建多個關聯模塊的項目(Multiple Mole Projects)。由一個總的模塊,下麵包含多個子模塊(子模塊還可以包含子模塊)。這種maven功能能支持大型的項目構建,往往大型項目由很多子模塊組成。
以下說明在eclipse下如何創建多模塊的maven項目。
創建總的POM
mvn archetype:create -DgroupId=com.easymorse.marshal -DartifactId=multi-moles-demo
創建一個maven項目,然後修改該項目的pom.xml文件,package類型改為pom:
<packaging>pom</packaging>
並且刪除src目錄。
創建子模塊
在總模塊目錄下,創建子模塊,比如web-demo:
mvn archetype:create -DgroupId=com.easymorse.marshal -DartifactId=web-demo
再創建一個比如日誌模塊:
mvn archetype:create -DgroupId=com.easymorse.marshal -DartifactId=logging-demo
在總pom的pom.xml文件中已經自動加入:
<moles>
<mole>web-demo</mole>
<mole>logging-demo</mole>
</moles>
在各子模塊的pom.xml文件中也自動加入了:
<parent>
<artifactId>multi-moles-demo</artifactId>
<groupId>com.easymorse.marshal</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
子模塊繼承了總POM的package,這里需要修改,web-demo模塊覆蓋為:
<packaging>war</packaging>
logging-demo模塊修改為
<packaging>jar</packaging>
對上級模塊的特別設置
需要在上級模塊中設置java編譯的參數,現在eclipse一般都使用比較新的版本,默認jdk是1.6,而maven默認還是1.4。
E. Maven多模塊開發,各模塊之間是怎麼調用的
Maven多模塊開發,各模塊之間是怎麼調用的
你可以交給Spring
在配置文件哪裡
把需要的模塊通過注入的方式
F. maven多模塊項目可以不在一個目錄嗎
可以。
多模塊項目由管理一組子模塊的聚合器 POM 構建。在大多數情況下,聚合器位於項目的根目錄中,並且必須具有 pom類型的打包。
子模塊是常規的 Maven 項目,它們可以單獨構建,也可以通過聚合器 POM 構建。
通過聚合器 POM 構建項目,每個具有與pom不同的打包類型的項目都會生成一個構建的存檔文件。
G. 多模塊下的ConfigurationProperties
IDEA一直是我們比較中意的開發工具,因為在開發過程中它能做到許多智能提示,這大大提高了我們的生產效率。
因此,如果我們想要在springboot的配置文件中自定義配置,並且能夠關聯到實體類並且能給出提示的話,除了必須的 @ConfigurationProperties 註解之外,我們還需要 spring-boot-configuration-processor maven依賴。
在單個項目中,通常我們依賴了這兩項,我們就能實現上述功能。然而,在多模塊中,我發現盡管依賴了上述,IDAE仍然提示我 spring boot configuration annotation processor not configured 。
作為強迫症晚期,我當然不能接受如此顯眼的大紅色報錯,但是不管是springboot的官方文檔還是stackoverflow,給出的解決辦法仍然是這兩種,我一度移動了依賴的位置去嘗試,但這仍然無功而返。
直到我在google中發現了這篇文章
spring-boot-configuration-processor不適用於maven子模塊項目
文中給出了另外一種解決辦法,就是添加plugin
終於,在添加以上的配置項目,重新編譯後,我的子模塊target下面自動生成了元數據,這次是可以點擊進去了,問題由此迎刃而解。
H. Java Maven打包總結(Jenkins多模塊編譯部署)
原文地址: Java Maven打包總結(Jenkins多模塊編譯部署)
依次執行了clean、resources、compile、testResources、testCompile、test、jar(打包)等7個階段。
完成了項目編譯、單元測試、打包功能,但沒有把打好的可執行jar包(war包或其它形式的包)布署到本地maven倉庫和遠程maven私服倉庫
依次執行了clean、resources、compile、testResources、testCompile、test、jar(打包)、install等8個階段。
完成了項目編譯、單元測試、打包功能,同時把打好的可執行jar包(war包或其它形式的包)布署到本地maven倉庫,但沒有布署到遠程maven私服倉庫
依次執行了clean、resources、compile、testResources、testCompile、test、jar(打包)、install、deploy等9個階段。完成了項目編譯、單元測試、打包功能,同時把打好的可執行jar包(war包或其它形式的包)布署到本地maven倉庫和遠程maven私服倉庫
可以看到主要區別在把生成的jar包最終存放的位置, package只管打包; install把打好的包放到了本地maven倉庫;deploy是同時放到本地倉庫和遠程maven私服
這里本地倉庫默認是 /root/.m2/repository/ ,具體配置在 ${M2_HOME}/conf/settings 的 localRepository 配置項決定。遠程私服倉庫一般是nexus,具體地址在項目的pom.xml中配置。比如
一般是進入父級目錄之後執行
如果是多級目錄的話,有時候並不一定是按照 具體的項目來 編譯,比如
這個時候如果一個項目一個項目來編譯會超級多,很繁瑣,這里是按照 subparentproject 來編譯,命令如下
有個注意的地方:
subparentproject 目錄下的pom.xml文件中一定有類型如下的配置
1、需要安裝插件 Extended Choice Parameter Plug-In 可以支持參數單選、多選
2、項目選擇"自由風格",而不是maven編譯
3、在「構建」 -> "執行shell" 中編寫 子模塊編譯腳本及其後續處理
具體配置如下圖
「構建」 -> "執行shell" 中的處理腳本
附加:
Linux Bash下字元串操作總結
I. 我的一個關於java的maven多模塊項目,資料庫我們統一用的一個伺服器,現在好像老師把那個伺服器
自己裝一個資料庫,把SQL文件在自己裝的資料庫里執行一遍,然後修改項目的jdbc連接配置,連到自己裝的資料庫上。
J. 如何在Maven中配置Spring依賴
1.1 spring-security-core
Spring Security的核心功能是由spring-security-core包提供的,包含了認證和訪問控制功能、支持standalone應用程序、方法級安全和JDBC支持。
3.2.3.RELEASE
4.0.4.RELEASE
org.springframework.security
spring-security-core
${org.springframework.security.version}
注意:我們使用的是3.2.x版本的Spring Security--Spring和Spring Security有著不同的版本計劃,所以他們的版本號之間沒有一對一關系。
如果項目使用的是較老版本的Spring,需要注意的時Spring Security 3.1.x版本不依賴於Spring 3.1.x版本,因為Spring Security 3.1.x版本在Spring 3.1之前發布。Spring的計劃是在後續的版本中,使雙方的版本號更為接近,更多細節請查看這個JIRA。我們將在後面的內容中看看這種情況對我們的實際影響。
1.2 spring-security-web
要為Spring Security增加Web支持,需要引入spring-security-web依賴:
org.springframework.security
spring-security-web
${org.springframework.security.version}
這個項目為Servlet環境引入了針對URL訪問控制的相關基礎安全組件和過濾器。
1.3 Spring Security與較老版本的Spring Core之間的依賴問題
如上文所述,這個新的依賴產生一個Maven依賴關系問題,Spring Security的相關jar不依賴於最新的Spring core的jar (而是以前的版本)。這可能使的被依賴的Spring core相關包在類路徑中被配置前在最新的Spring 4.x相關包的前面。
這是如何發生的呢?我們需要了解Maven處理版本沖突的機制,Maven會選擇與依賴樹樹根最接近的版本。在之前的情況中,spring-orm依賴4.x版本的spring-core,而spring-security-core依賴於3.2.8版本的spring-core。因此,spring-orm和sprint-security-web的定義順序就是一個問題,先定義的會有更高的優先順序。最終情況就是,我們的類路徑中會有兩個版本的spring-core。
為了避免這類問題,我們需要在我們的pom文件中明確指定一些Spring依賴,而不依靠Maven隱式依賴機制。我們將在pom的根文件中定義特定的依賴關系,這樣這些依賴關系將會有更高的優先順序。下面例子中,將對所有的Spring核心組件明確定義相同的版本,對於多模塊項目,需要在父配置文件的dependencyManagement屬性中定義。
org.springframework
spring-core
${org.springframework.version}
org.springframework
spring-context
${org.springframework.version}
org.springframework
spring-jdbc
${org.springframework.version}
org.springframework
spring-beans
${org.springframework.version}
org.springframework
spring-aop
${org.springframework.version}
org.springframework
spring-tx
${org.springframework.version}
org.springframework
spring-expression
${org.springframework.version}
org.springframework
spring-web
${org.springframework.version}
1.4 spring-security-config及其他
要使用豐富的Spring Security XML的命名空間,需要定義spring-security-config依賴:
org.springframework.security
spring-security-config
${org.springframework.security.version}
runtime
沒有任何代碼需要在編譯時依賴這個包,所以它的范圍應該定義為runtime。
最後,LDAP、ACL、CAS和OpenID支持需要分別增加各自的依賴包:spring-security-ldap, spring-security-acl, spring-security-cas和spring-security-openid。