从0到0.1学习 maven(一:概述及简单入门)
该文章为maven系列学习的第一篇,共三篇 第二篇快速入口: 第三篇快速入口:
概述
从没用的有趣小知识开始
Maven可以翻译成“知识的累积”,“专家/行家”。
Maven是什么?
- 服务于java的自动化构建工具
-
什么是构建?把动态web工程经过编译得到的编译结果直接部署到服务器上的整个过程 构建的环节:
clean->compile->test->report->package->install->deploy
-
ps: package过程把动态web工程打war包,java工程打jar包 deploy时将动态Web工程生成的war包复制到servlet容器下,可使其运行
- 依赖管理工具与项目信息管理工具
-
类库是通过依赖的方式引入进项目,maven通过其坐标系统可以精准的定位每一个artifacts/控件,进行有序地依赖管理。 此外,maven也管理了如开发者列表,项目描述等琐碎的项目信息。
为什么用Maven?
- 把一个项目拆分成多个工程
- 把jar包保存在仓库中
- 可使用统一规范的方法去下载jar包
- 预防jar包版本不一致
- 自动导入依赖包
使用与配置入门
目录结构
可以看到一共有四个文件夹和三个文件。
-
bin:包含了maven的运行脚本。命令行中命令例如“mvn -v”就是在调用这些脚本。 boot:存放类加载器框架,用于加载自己的类库。 conf:包含了settings.xml,修改该文件可以全局定制maven的行为。或将该文件复制到~/.m2/中,控制该用户下的maven。 lib:包含了maven运行时需要的所有类库。
编写pom
clean:清理输出文件夹/target compile:将主代码编译到target/class文件夹
maven中默认的项目主代码位于/src/main/java 默认的测试代码位于/src/test/java
-
测试部分使用JUnit/@Test/assertEquals() 此处不详细展开了
使用Archetype生成骨架
先创建好一个空的目录,若是maven3则运行
mvn archetype:generate
运行后会开始下载并列出一大堆archetype,按照默认值回车就好,再填好前面说的三要素,就创建成功了。
小彩蛋:直接运行包含main的jar
step1:编写一个带有main的class(可以试一下上面的archetype创建) step2:在project→build→plugins下添加插件maven-shade-plugin
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>1.2.1</version> <executions> <execution> <phase>package</phase> <goals><goal>shade</goal></goals> <configuration> <transformers> <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> <mainClass>com.ptyp.App(这里写你自己的main所在的类)</mainClass> </transformer> </transformers> </configuration> </execution> </executions> </plugin> </plugins> </build>
step3:执行mvn clean install 可以看到target文件夹中出现了两个jar,其中original是不带main的,另外一个是带main的,我们点进去看看META-INFMANIFEST.MF文件 发现它多了一行Main-Class
step4:运行该jar文件:java -jar jar名.jar,成功打印~ 彩蛋结束
第一篇完
参考
- 《Maven实战》- 许晓斌
上一篇:
通过多线程提高代码的执行效率例子
下一篇:
react 随机数案例 组件不必要的更新