ps:先水一把,2个月没更新了。最近在公司实习,看了webx框架,其中有一个maven工具(比较类似于ant,还是原来的项目分支,比ant强大一些),然后写了一个关于这个工具的大体流程。
什么是maven?
http://baike.baidu.com/view/336103.htm?fr=aladdin
maven的生命周期?
参考http://www.cnblogs.com/haippy/archive/2012/07/04/2576453.html
Default Lifecycle | 生命周期阶段 | 描述 |
validate | 验证 | 确保当前配置和 POM 的内容是有效的。这包含对 pom.xml 文件树的验证。 |
initialize | 初始化 | 在执行构建生命周期的主任务之前可以进行初始化。 |
generate-sources | 生成源码 | 代码生成器可以开始生成在以后阶段中处理或编译的源代码。 |
process-sources | 处理源码 | 提供解析、修改和转换源码。常规源码和生成的源码都可以在这里处理。 |
generate-resources | 生成资源 | 可以生成非源码资源。通常包括元数据文件和配置文件。 |
process-resources | 处理资源 | 处理非源码资源。修改、转换和重定位资源都能在这阶段发生。 |
compile | 编译 | 编译源码。编译过的类被放到目标目录树中。 |
process-classes | 处理类 | 处理类文件转换和增强步骤。字节码交织器和常用工具常在这一阶段操作。 |
generate-test-sources | 生成测试源码 | mojo 可以生成要操作的单元测试代码。 |
process-test-sources | 处理测试源码 | 在编译前对测试源码执行任何必要的处理。在这一阶段,可以修改、转换或复制源代码。 |
generate-test-resources | 生成测试资源 |
允许生成与测试相关的(非源码)资源。 |
process-test-resources | 处理测试资源 | 可以处理、转换和重新定位与测试相关的资源。 |
test-compile | 测试编译 | 编译单元测试的源码。 |
process-test-classes | 对测试编译生成的文件做后期处理(需Maven2.0.5及以上) | |
test | 测试 | 运行编译过的单元测试并累计结果。 |
prepare-package | 执行打包前的所有操作(需Maven2.1及以上) | |
package | 打包 | 将可执行的二进制文件打包到一个分布式归档文件中,如 JAR 或 WAR。 |
pre-integration-test | 前集成测试 |
准备集成测试。这种情况下的集成测试是指在一个受到一定控制的模拟的真
实部署环境中测试代码。这一步能将归档文件部署到一个服务器上执行。 |
integration-test | 集成测试 | 执行真正的集成测试。 |
post-integration-test | 后集成测试 | 解除集成测试准备。这一步涉及测试环境重置或重新初始化。 |
verify | 检验 | 检验可部署归档的有效性和完整性。过了这个阶段,将安装该归档。 |
install | 安装 | 将该归档添加到本地 Maven 目录。这一步让其他可能依赖该归档的模块可以使用它。 |
deploy | 部署 |
将该归档添加到远程 Maven 目录。这一步让这个工件能为更多的人所用。 |
maven快速上手实验一把
1.下载maven,谷歌搜索下~
下载为apache-maven-3.2.3 文件
配置环境变量bin配置到path中
cmd下mvn v 命令测试下是否ok.
成功后,
内部有
bin(包括maven的一些命令),
boot(plexus-classworlds-2.5.1.jar 估计是预先处理类字节的jar包),
conf(配置项,包括日志等)
lib(函数支持库,以及扩展包等,增强功能用的)
2.
创建一个类似这样的目录结构
maven
maven1202
src
main
java
com
alibaba
maven
Hello.java
test
pom.xml
---------------------
pom.xml内容,这个配置文件的详细介绍,参看http://blog.csdn.net/adeyi/article/details/17259479
<?xml version="1.0" encoding="UTF-8"?> <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.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <!--项目属于哪一个组/公司/组织啥的--> <groupId>com.alibaba.maven</groupId> <!--本组织之类中唯一的ID--> <artifactId>maven1202</artifactId> <!--当前的版本号--> <version>1.0</version> <!--元素声明了一个对于用户更为友好的项目名字--> <name>maven</name> </project>
3.cmd切换目录至maven1202
敲命令mvn compile进行mvn项目编译,时间有点长,耐心等待
编译完成后,在同src,pom.xml目录中,出现一个target目录,里面包含着编译之后的class文件(哎,这个编译实验原理不就是javac下maven目录并输出结果~)
4.继续敲命令mvn package对maven项目打包输出jar
这个输出jar的过程可能会出现erro,不过多试几次就行了~测试过程中第三次才ok
jar最终会输出在target目录中
5.敲命令
java -cp maven1202-1.0.jar com.alibaba.maven.Hello
输出Hello,java的内容,至此完成了maven的构建与输出