天天看點

IntelliJ IDEA中關于Maven建構複雜的聚合工程的管理和打包問題

項目結構,如下圖

IntelliJ IDEA中關于Maven建構複雜的聚合工程的管理和打包問題

一、管理

1.1 父子間依賴問題

Pom 工程引入Module,直接 New Module 即可,在 父類的Pom.xml 會自動加入module基本資訊,如下

<modules>
        <module>initSqlBuild</module>
        <module>specificationBuild</module>
        <module>queryDsl</module>
        <module>initHsqlBuild</module>
        <module>SqlMapping</module>
        <module>jpaCommon</module>
    </modules>      

新引入的Module的Pom.xml,檔案,自動引入如下資訊

<parent>
        <artifactId>jpa</artifactId>
        <groupId>com.tonels</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>specificationBuild</artifactId>      

1.2 Module間依賴問題

一般會在聚合工程中,加入common子產品,提取公共資訊,給所有同級子產品使用,這個是單向配置的。

直接在依賴方的Pom.xml 裡配置如下

<dependency>
            <groupId>com.tonels</groupId>
            <artifactId>common</artifactId>
            <version>1.0-SNAPSHOT</version>
 </dependency>      

1.3 二級父依賴一級父問題,類似上面,直接,加入配置即可

<dependency>
            <groupId>com.tonels</groupId>
            <artifactId>common</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>      

1.4 關于項目的重新命名問題,分為兩步,

第一步 點選左側子產品名(project 視圖下),快捷鍵 Shirt + F6,出現,下圖分别 Rename檔案夾名和Module名

IntelliJ IDEA中關于Maven建構複雜的聚合工程的管理和打包問題

第二步 手動修改所依賴和所有被依賴的地方,這裡我試過,本地IDEA并沒有重新 Rafactor 所有的相關者

1.5 關于Parent項目的Remove Module問題,分三步

第一步 點選左側子產品名(project 視圖下),右鍵,如圖

IntelliJ IDEA中關于Maven建構複雜的聚合工程的管理和打包問題

或者直接鍵盤 Delete,會出現如下,OK 即可

IntelliJ IDEA中關于Maven建構複雜的聚合工程的管理和打包問題

注意:Ok 之後,兩個地方會出現變化

IntelliJ IDEA中關于Maven建構複雜的聚合工程的管理和打包問題

第二步 Remove 之後,此時的Pom工程中,子產品管理的地方并沒有自動移除,這裡要手動移除

IntelliJ IDEA中關于Maven建構複雜的聚合工程的管理和打包問題

移除後,會注意到,我們期望的,Maven視圖下的灰色子產品就會不見了。

第三步 手動 Delete projerct視圖下的子產品即可

二、打包問題

Maven打包就一個問題,就是找不到依賴的問題,可能基于 Eclipse 和 IDEA 的一些配置管理的不同,打包有時會出現不同的結果,有時,Eclipse打包正常,​​IDEA無法打包,嘗試各種方法解決,我之前寫過一些總結,點選可連結。。​​

要注意的地方

2.1 自動打包,在最跟處,用IDEA內建的Macen插件,直接 clean 之後,install 即可

2.2 手動打包,要完全按照依賴順序,依次打包,這裡我開始是手動依次打包,出現了暫時解決不了的問題,找不到依賴包,後來我選擇了第一種。。。。

2.3 打包後的目錄結構,為什麼會是這個樣子??

并不是我所希望的目錄結構,那種按項目分級的項目結構,可能是我定義Package的時候,不規範,全是 com.tonels 引發的問題,先不探究這個了…其實所有的一切是因為,我先在二級 parent 中定義了一個與一級 parent 同名的子產品,我以為會按項目結構劃分打包目錄,然後後來,引包引不進去,修改項目名,打包不成功,等等暫時不能解決的問題。

上一篇 ​​maven打包失敗,Could not resolve dependencies for project…Could not find artifact …in…問題解決​​