走进JavaWeb技术世界10:从手动编译打包到项目构建工具Maven

小李赶紧把公司内所有项目的Ant脚本都要过来,仔细观察了一下, 很快就发现了这些脚本中蕴藏着一些共同的“模式”,这些模式主要体现在Build的步骤上:

 

1. 从版本控制系统下载代码

2. 编译java 文件,形成jar包

3. 运行单元测试

4. 生成代码覆盖度报告和测试报告

4. 打包形成war 文件

5. 上传到测试服务器上,进行安装

 

其实这也难怪,实际的Build不就是这样的嘛。 但是中间也有不同之处:

 

(1) 路径不同,例如

java 源文件 下载下来以后放的位置不同,五花八门

编译成的java class 放置的位置不同

测试报告放置不同

war包生成后放置的路径不同

。。。

 

(2)  项目依赖不同,例如

各个项目依赖的第三方jar包可能是不一样的

各个项目都有一个Web子项目,它依赖于其他java 项目,所以在build的时候,要先build这些java 项目才行

例如下图中的OnlineShop,这是个Web项目, 它依赖于ApplicationConfg, LoggingFramework, OnlineShopApi这三个子项目。

 

项目依赖这个没办法, 毕竟是各个项目的业务所要求的,小李没有办法改变。

 

但是那些不同的路径真的是必要的吗?   能不能让大家的路径都保持一致呢 ? 

 

一个新的主意像闪电一样划过黑暗的夜空: 

确实可以保持一致, 但是大家都要遵循一定的约定

如果大家都这么做,小李就可以增强一下Ant,只要运行ant  complie , 就会自动的去src/main/java 找到源文件进行编译, 只要运行ant test,        就会自动去src/test/java 找到测试用例, 编译并运行。

 

换句话说,只要遵循目录的约定, 大家就不用费心费力的指定各种路径了, 一切在背后由工具自动搞定, 这样的话Build脚本就可以极大的简化了,只需要寥寥几行即可。

 

这只是一个java项目,要是多个java项目,有依赖关系,像上面提到的 OnlineShop 依赖OnlineShopAPI, AppplicationConfig, LoggingFramework , 该怎么处理?

 

这也不难, 小李想,首先每个java项目都得遵守上述约定,其次需要定义项目之间的依赖关系, 也可以用XML描述出来。

 

每个java项目都需要有个叫pom.xml的文件, 例如OnlineShop这个项目的pom如下:

 

这样以来工具就能自动找到被依赖的项目, 然后去编译打包它了。

 

此外,各个java项目之间也需要按约定来组织目录,例如:

+- pom.xml

+- online-shop-web

| +- pom.xml

| +- src

|   +- main

|     +- webapp

+- online-shop-api

| +- pom.xml

| +- src

|   +- main

|     +- java

+- logging-framework

| +- pom.xml

| +- src

|   +- main

|     +- java

+- app-config

| +- pom.xml

| +- src

|   +- main

|     +- java

 

如果扩展一下, 把第三方的jar 文件例如JUnit 也可以给用这种方式来描述:

想到这一层,小李不禁激动起来,因为第三方的jar 管理一直是一个令人头疼的问题,最早的时候大家都是手工的Copy来Copy去, 由于版本不同导致的错误特别难于发现。

 

每个人在建立自己Eclipse workspace的时候, 得拿到所有依赖的jar包, 并且在项目上设置好, 可是非常的费劲啊。 

 

如果利用这种声明的办法, 每个人岂不卸下了一个巨大的包袱 ? 

 

当然公司需要建立一个公用的第三方jar 文件版本库, 把公司最常用的第三方jar包都放进去, 工具在分析项目的配置文件pom.xml的时候,就可以去公司的版本库里去读取并且下载到本地。

 

将来有新人进入公司, 只要给他一个pom.xml , 用Eclipse导入,就能轻松的把一个可以直接运行的workspace建立起来, 再也不需要设置那些烦心的jar了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值