在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