請教一個eclipse中maven項目:父子依賴問題

hzhj91 發布于 02/14 19:26
閱讀 114
收藏 0

背景:
一個maven的聚合項目,在父項目的pom里通過<modules>引入了幾個子項目。
在eclipse里,一個java文件會同時出現在子項目和父項目里。

問題:
有一個java文件,在子項目中正常,但是在父項目里的java文件中,找不到代碼中用到的jar,比如說fastjson,顯示紅色報錯。
原因是,fastjson只定義在了子項目的pom中,沒有定義在父項目的pom中,導致父項目的maven dependency中沒有這個jar。

而我又不想把這個缺少的fastjson的申明定義在父項目的pom里,那么如何能讓父項目不報錯呢?

加載中
0
hzhj91
hzhj91

謝謝關注,問題解決了,我總結一下。
這個問題實際上是eclipse的設置問題,項目的打包和運行都沒問題。
之所以父項目會報錯,是因為eclipse認為父項目里的java文件需要編譯,而父項目的maven dependency下沒有這個jar。
因此,只要把父項目的classpath下的子項目的java文件移除,就不再去檢查jar包是否存在,也就不報錯了

0
chentao106
chentao106
代碼里依賴了,pom就得要聲明。不知道題主為什么不想在父項目中依賴(甚至不明白為什么父項目還會有代碼而不是pom類型),如果只是單純的不想打包或傳遞依賴,依賴scope為provided或者optional為true就好。
0
hzhj91
hzhj91

引用來自“chentao106”的評論

代碼里依賴了,pom就得要聲明。不知道題主為什么不想在父項目中依賴(甚至不明白為什么父項目還會有代碼而不是pom類型),如果只是單純的不想打包或傳遞依賴,依賴scope為provided或者optional為true就好。

因為這一個jar只是某一個子項目中使用,所以想在子項目中申明,放在父項目中太臃腫。

父項目里沒有java代碼,是同一份java代碼在父子項目里同時顯示了,對應的硬盤上的同一個文件。

實際上這樣寫,打包編譯運行都沒有問題,只是eclipse上的父項目的classpath下沒有這個jar,所以會報錯, 現在就是不知道如何把這個jar添加到父項目的classpath下。

那么退一步,不考慮父項目的pom臃腫的問題,就把這個jar的申明放在父項目的dependency里(scope=provided, optional = true ),會發現父項目的classpath下有這個jar,不報錯了,然而又有新的問題:打包后,這個jar會出現在所有子項目中,實際只想讓它出現在某一個子項目中

chentao106
chentao106
我覺得你對eclipse和maven的使用,或者工程結構有大問題。正常父項目是一個pom工程,不會有代碼,打包也不會有jar更不會有代碼。
返回頂部
頂部
真人龙虎斗论坛