一、Ant
Ant是最早出现的构建工具。
1、作用
- 可以用ant编译java类,生成class文件
- ant可以自定义标签、配置文件,用于构建。
- ant可以把相关层构建成jar包 。
- ant把整个项目生成web包,并发布到Tomcat
2、优点
- 跨平台性:Ant是纯Java语言编写的,因此具有很好的跨平台性。
- 操作简单:Ant是由一个内置任务和可选任务组成的。Ant运行时需要一个XML文件(构建文件)。
- Ant通过调用target树,就可以执行各种task:每个task实现了特定接口对象。由于Ant构建文件时XML格式的文件,所以很容易维护和书写,而且结构很清晰。
- Ant可以集成到开发环境中:由于Ant的跨平台性和操作简单的特点,它很容易集成到一些开发环境中去。
3、build.xml配置
build.xml就是一个XML文件,它包含一个project节点和至少一个target节点,target节点包含多个task元素。简单说,target节点代表着你的构建目标,而该目标是由多个操作/任务(task)来达成的。
下面详解各节点及属性含义:
https://blog.csdn.net/mevicky/article/details/72828554
二、Maven
除了以程序构建能力为特色之外,还提供高级项目管理工具
1、作用
- 使用Project Object Model来对软件项目管理;
- 内置了更多的隐式规则,使得构建文件更加简单;
- 内置依赖管理和Repository来实现依赖的管理和统一存储;
- 内置了软件构建的生命周期;
2、优点
- 拥有约定,知道你的代码在哪里,放到哪里去
- 拥有一个生命周期,例如执行 mvn install就可以自动执行编译,测试,打包等构建过程
- 只需要定义一个pom.xml,然后把源码放到默认的目录,Maven帮你处理其他事情
- 拥有依赖管理,仓库管理
3、pom.xml配置
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven.apache.org/xsd/maven-4.0.0.xsd"> <!-- 模型版本。maven2.0必须是这样写,现在是maven2唯一支持的版本 --> <modelVersion>4.0.0</modelVersion> <!-- 公司或者组织的唯一标志,并且配置时生成的路径也是由此生成, 如com.winner.trade,maven会将该项目打成的jar包放本地路径:/com/winner/trade --> <groupId>com.winner.trade</groupId> <!-- 本项目的唯一ID,一个groupId下面可能多个项目,就是靠artifactId来区分的 --> <artifactId>trade-core</artifactId> <!-- 本项目目前所处的版本号 --> <version>1.0.0-SNAPSHOT</version> <!-- 打包的机制,如pom,jar, maven-plugin, ejb, war, ear, rar, par,默认为jar --> <packaging>jar</packaging> <!-- 帮助定义构件输出的一些附属构件,附属构件与主构件对应,有时候需要加上classifier才能唯一的确定该构件 不能直接定义项目的classifer,因为附属构件不是项目直接默认生成的,而是由附加的插件帮助生成的 --> <classifier>...</classifier> <!-- 定义本项目的依赖关系 --> <dependencies> <!-- 每个dependency都对应这一个jar包 --> <dependency> <!--一般情况下,maven是通过groupId、artifactId、version这三个元素值(俗称坐标)来检索该构件, 然后引入你的工程。如果别人想引用你现在开发的这个项目(前提是已开发完毕并发布到了远程仓库),--> <!--就需要在他的pom文件中新建一个dependency节点,将本项目的groupId、artifactId、version写入, maven就会把你上传的jar包下载到他的本地 --> <groupId>com.winner.trade</groupId> <artifactId>trade-test</artifactId> <version>1.0.0-SNAPSHOT</version> <!-- maven认为,程序对外部的依赖会随着程序的所处阶段和应用场景而变化,所以maven中的依赖关系有作用域(scope)的限制。 --> <!--scope包含如下的取值:compile(编译范围)、provided(已提供范围)、runtime(运行时范围)、test(测试范围)、system(系统范围) --> <scope>test</scope> <!-- 设置指依赖是否可选,默认为false,即子项目默认都继承:为true,则子项目必需显示的引入,与dependencyManagement里定义的依赖类似 --> <optional>false</optional> <!-- 屏蔽依赖关系。 比如项目中使用的libA依赖某个库的1.0版,libB依赖某个库的2.0版,现在想统一使用2.0版,就应该屏蔽掉对1.0版的依赖 --> <exclusions> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> </exclusion> </exclusions> </dependency> </dependencies> <!-- 为pom定义一些常量,在pom中的其它地方可以直接引用 使用方式 如下 :${file.encoding} --> <properties> <file.encoding>UTF-8</file.encoding> <java.source.version>1.5</java.source.version> <java.target.version>1.5</java.target.version> </properties> ... </project>
https://blog.csdn.net/u012152619/article/details/51485297
4、Maven仓库配置
Maven缺省的本地仓库地址为${user.home}/.m2/repository 。也就是说,一个用户会对应的拥有一个本地仓库。
你也可以自定义本地仓库的位置,修改settings.xml :
<localRepository>E:/repository</localRepository>