发表于: 2018-04-02 09:26:41
2 596
Sixteen Day
今日任务:
重新认识 maven
学习 Spring
对Struts做些了解
XML 解析第三种方式
学习轨迹:
第一部分: Maven
Maven, Apache 下的工程管理工具。
1. Maven in 5 Minutes(http://ifeve.com/getting_started_in_five_minutes/)
1.1 查看 Maven 版本(Mac 使用 brew 安装就OK了)
1.2 创建一个项目
mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=
false
差不多执行了 30 s,最后结果,Oh 哈哈,有时间统计的: 26.802 s
彩蛋: Mac 下目录以树状展示,在终端下输入如下命令
alias tree="find . -print | sed -e 's;[^/]*/;|____;g;s;____|; |;g'"
然后执行 tree 命令就OK了
tree
如上就是maven项目目录结构,quickstart结构的。
src/main/java 目录下包含了项目源码
src/test/java 目录下包含了测试代码,额,貌似把测试这件事情忘了 .... ...
pom.xml 是项目对象模型(Project Object Model)
1.3 POM
在 Maven中,pom.xml 文件是项目配置的核心。它是一个独立的配置文件,包含了你想要的方式下建立项目所需要的主要信息。
是一个XML文档
1.4 mvn package 编译项目
完成,感觉即使build了下工程。执行的阶段有:
a. 验证
b. 编译代码
c. 处理代码
d. 生成资源文件
e. 处理资源文件
f. 编译
1.5 java -cp target/my-app- xxxx
这条语句会打出一个jar包
1.6 重新编译出新的目标文件和新jar包
清理:
mvn site
快速 5 分钟,这个,基本是认识了 mvn的几条命令以及几个阶段,非常nice.
额,吓着我了,生成了一个关于工程的文档。
2. Maven 入门指南(一)http://ifeve.com/maven-1/
2.1 先读几遍 Maven哲学:
Maven 通常被认为是构建(Build) 项目的工具;
最初来看Maven的那些人都非常熟悉 Ant(我不知道Ant是什么玩意儿),自然而然的就把Maven和ant联系到了一起,但是亲爱的用户们,Maven不仅仅是一个构建工具,更不是Ant的替代品。
Maven被创造的初衷跟Ant完全不同。
Ant 只不过是一个小小的工具箱,而 Maven 则大大的不同,Maven 可以称之为是一个应用模式,通过这个应用模式,我们可以实现具有可见性、可重用性、可维护性以及可理解性等特征的基础架构。(这段比较难理解,光这几个特性就够喝一壶的)
如果我们在开发项目的时候,没有上面的几个特性,那么多人在一起高效的工作是不可能的。
离开了可见性,项目成员就不可能知道项目组其他成员是否已经完成了某一个功能,而实际上实现这个功能的代码完全可以被复用。看看,没了可见性,如此大好机会就这么浪费了。
然而,进一步来说,如果代码没有被很好的复用,那么久很难创造出一个可维护型比较好的系统,额... 丢失了可见性的同时整个系统的可维护性也被干掉了。
更糟糕的是,当每个人都去关注项目中这些零零碎碎的点(因为没有复用,维护的时候回耗费大量人力),任务人都没有了时间与精力去理解整个项目的结构,额,项目的可理解性也被破坏了。
最终导致了谷仓效应(Silo Effect, 企业内部各自为政,内部缺少沟通和互动的现象),缺乏信息共享的团队伴随之而来的是是整个团队很大程度上的挫败感。
一个团队中,每个人都以不同的方式去工作,产生这种想象是自然而然的事情。
Maven 的产生非常现实,就是为了让 Apache 的多个项目团队以相同的方式进行开发。
这样,因为非常清楚各个项目是怎么运作的(因为他们压根就一样,我们给统一的),所以在各个项目之间来回的进行切换是非常容易的。
如果一个开发人员花了大量的时间去理解一个项目是如何构建的,那么他就没有必要再花时间去了解其他的项目是如何构建的。(我们统一了他们的构建方式)
同样的做法,我们将其推广到了测试、文档和生成度量报告以及测试部署的上面。
所有的项目都拥有完全一样的特征,通过Maven来统一的理解这些特征,从而达到管理项目的目的。
在一个更高的层次上,对项目进行构建、测试、打包、记录和部署。
当然,步调统一是不可能的,如同矛盾的普遍性和特殊性一样,每个构建步骤都有可能会发生变化,但是在通过Maven管理下,这种变化下是清晰可见的。
而如何让大家可以清晰的认识到这些变化,最简单的方法就是提供一套简单的共享模式。就如同二维码支付一样,大家都知道怎么做,但是钱是变化的。
我花了 40 分钟,一个单词一个单词的看完了 Philosophy of Maven,现在手还在抖 ... 就如同上次看《程序员自我修养》时候一样,醍醐灌顶,茅塞顿开!今天值了
我们在开发,我们在用语言,在用工具,在用加密,在做网络传输 无一不是有一个东西在底下撑着这些,这个东西就是 --- 哲学。然而,这个东西却可遇不可求。他有其抽象,有其因果,有其自然而然,无论生还是灭,似乎都在它的体系之下,是否还有东西能超过哲学 ... ...
2.2 构建工具 ?
总结:
XML 第三种方式没有做出来 ... ... 花掉了 2.5 个小时
今天重点学习了Maven,当然是用Maven很重要,但是更重要的时候彻底理解了Maven的初衷
通过跟朋友讨论知道了另一个构建工具Gradle
- https://en.wikipedia.org/wiki/Gradle
- https://gradle.org/
大体上看了下,我没有实际是用,但是感觉比Maven要快一些,肯定是做了优化的,Maven 是 04 年出来的,gradle 是 07 年,必须优化了的,但肯定也有弊端,后面看了就知道了。个人感觉其实 Maven 不重要,重要的是为什么有Maven。以 gradle 官网的一幅图结束
明日计划:
1. 继续看Maven
DONE!!!
评论