在ant和bat時代,經常要為每個項目寫或修改腳本,即便項目主要目錄結構也要在代碼里體現。
到maven時代,通過約定簡化了很多東西:pom.xml所在的目錄應為項目的根目錄,假設該目錄為${proj-dir},那么Maven有以下假設:
- ${proj-dir}/src/main/java —— 存放項目的.java文件。
- ${proj-dir}/src/main/resources —— 存放項目資源文件,如spring, hibernate配置文件。
- ${proj-dir}/src/test/jave —— 存放所有測試.java文件,如JUnit測試類。
- ${proj-dir}/src/test/resources —— 測試資源文件。
- ${proj-dir}/target —— 項目輸出位置。
運行一條mvn clean package命令,Maven會幫你清除target目錄,重新建一個空的,編譯src/main/java類至target/classes,復制src/main/resources的文件至target/classes,編譯src/test/java至target/test-classes,復制src/test/resources的文件至target/test-classes;然后運行所有測試;測試通過后,使用jar命令打包,存儲於target目錄。Maven做的事情一點也不少,只是都對用戶隱蔽起來了,它只要求你遵循它的約定。
到現在逐漸流行的gradle,更簡化了maven相關的配置。比如引入hibernate依賴
采用 Maven
<dependency><groupId>org.hibernate</groupId><artifactId>hibernate-core</artifactId><version>4.3.6.Final</version></dependency>
采用 Gradle 只需一行
org.hibernate:hibernate-core:4.3.6.Final