多maven項目的實例demo,展示了聚合、繼承、工程依賴、單元測試、多war聚合、cargo發佈等場景。
一、工程介紹 task-aggregator 是父工程,同時承擔聚合模塊和父模塊的作用,沒有實際代碼和資源文件
task-common 是基礎工程,裏面是公共的代碼
task-sla 是某一個業務子模塊,不包含web內容
task-sla-web 是某一個web子模塊
task-web-dist是最外圍的web工程,聚合多個web工程,形成最終的war包
依賴關係是:task-common《-task-sla《-task-sla-web《-task-web-disk
二、task-aggregator
(1)定義公共變量<properties><spring.version><struts2.version> <hibernate.version></properties>
(2)模型版本<modelVersion><groupId><artifactId><version><packaging>
(3)帶聚合模塊 <modules><module>../task-common
(4)配置部署的遠程倉庫 <distributionManagement><snapshotRepository><id><name><url>
(5)插件管理<pluginManagement>
(6)依賴管理<dependencyManagement>
三、task-common
在代碼內部用到了spring的註解
Java代碼
public abstract class GenericDao<T>implements IGenericDAO<T>{
private Class<T> entityClass;
public GenericDAO(Class<T> clazz){
this.entityClass = clazz;
}
@Autowired
private HibernateTmeplate hibernateTemplate;
}
這裏用到了@Autowired註解,所以最終形成的war包,必須在spring配置文件中聲明HibernateTemplate類型的bean,否則會報錯
四、task-web-disk 然後這個工程裏包含了web層的東西,包括Action類、jsp、圖片、struts2的配置文件等,這些東西放在web工程裏是最合適的
這裏需要注意2點:
1. 這個工程的packing類型是war,而不是jar。但是最終它不會獨立打出war包來,其src/main/webapp裏的所有文件,都會被最外圍的task-web-dist工程聚合成一個總的war。
2.這個工程的WEB-INF目錄下,沒有web.xml(有也沒用,最終會被覆蓋)。默認情況下,packing類型爲war的項目,如果沒有wen.xml,則構建會失敗,因此需要在pom裏做一個配置。