1
我將現有的spring項目拆分爲多個模塊項目,其中每個模塊僅依賴於常用模塊,並創建除創建戰爭的最後一個之外的jar文件文件。帶有單個war文件的Spring Multi模塊項目,其中所有模塊僅依賴於通用模塊
下面是項目結構
parent - packaging -POM, defines module sequence
common_mod - common java code i.e. interface , base classes
jar-Mod-1 - depends on common
jar-Mod-2 - depends on common
jar-Mod-3 - depends on common
war-Mod - depends only on common, this contains java and webapp code
每個項目都有自己的Spring上下文。最後一個模塊將它們中的每一個導入例如
<import resource="classpath*:common-config.xml"/>
現在我想創建一個所有模塊在它的jar但沒有定義每個模塊中最後的戰爭模塊依賴單一的戰爭。如果我指定相同的話,那麼開發人員也可以在戰爭模塊中寫出特定於模塊的代碼(比如說Jar Mod 1模塊),這也是我想避免的。
現在,當我創建戰爭時,它僅包含通用模塊的jar,因爲它在war模塊中被指定爲dependency。
所以當我運行這個項目時,它會抱怨從其他模塊找不到的bean,這是顯而易見的,因爲war不包含其他模塊的罐子。
如果要將JAR置於WAR中,則必須定義WAR取決於JAR。這就是它的工作原理。我看過你有異議,但我不完全明白這個反對意見。無論如何,我預計這個反對意見被高估了,因爲當B依賴於A時,沒有什麼能阻止你在B中編寫與A相關的代碼。也許Jigsaw會停下來。 – michaldo
所有這些模塊都是獨立的,所以在任何時候您都應該能夠註釋掉父pom中的任何模塊,並且代碼仍然應該編譯。如果您將單個模塊的代碼放入最後一個模塊中,那麼它將不會編譯。所以即使B依賴於A,它也是通過通用模塊而不是直接的。 –
我不知道你是否知道範圍'運行時'的依賴關係:http://stackoverflow.com/questions/12272499/maven-what-is-the-runtime-scope-purpose –