Maven编译多子项目依赖

早在某公司实习的时候就听闻过Maven,只是听大神简单的介绍过,自己没有实习做过。之前做Android 的时候主要是用gradle(不过真心不熟),大概有点知道Maven的作用,这次来深圳某公司实习,老板叫用Maven 编译C++,虽然事实证明老板的想法有点错误,不过也基于这个,还是稍微正规的学了一发Maven(当然是自学了,除了C++其他都是自学的)。


Maven简介

Maven其实主要就是解决项目编译和项目依赖的问题,在大型项目中很有优势。

例如你的一个项目中有几十外部依赖包,和你自己写的一些包,如果是不用Maven这种东西的话,你得一个一个包的下载,这样比较效率低下,而且一旦你用的包有更新,你又要重新去下载,可能在小项目中这倒没什么,但是在正规的大项目中,外部包的更新换代对项目还是有很大的影响,如果一个外部包有漏洞,可能给黑客攻击的机会,这个时候就必须得更新包。

所以Maven就应运而生,在Maven中只要在一个pom文件中,做一些配置,就可以自动下载所需要的依赖包到本地仓库,然后多个项目可以共享本地仓库的依赖包。如果依赖包需要更新的时候,只需要改一下版本号,就可以了。而且Mavenpom是每个项目(模块)都会有,这些pom中可以有继承的关系,所以有一些依赖包只要在一个parent里面定义就可以了,而且在子pom中也可以自己覆写父pom的定义。

这里只是简单介绍一下Maven的一些概念,关于安装Maven网络上已经有很多教程了,这里就不重复造轮子了,还有Maven的详细原理,这里就给一些自己学习过程的中一些资料:

Maven 入门详解 http://ifeve.com/maven-1/ 

Maven Linux上部署项目 

http://www.oracle.com/technetwork/cn/community/java/apache-maven-getting-started-1-406235-zhs.html 


Maven多项目构建

 下面介绍一下在网上没有的东东,在WindowsIntellij里面部署一个多项目Maven的过程以及踩过的坑。


注意:这里介绍的多项目是一个大项目下包括多个子项目,本身大项目中的pom是起到配置作用,不生成jarwar文件,运行在Main项目中,Main项目中调用Part1Part2两个项目中的函数

 

首先新建一个Maven项目,取名MavenProject生成的时候不要用模板(如果是自己的项目有一定类型可以用模板,这里只是一个教程,所以没有用模板)。然后生成之后删掉scr文件夹。然后再添加三个模块,取名MainPart1Part2groupID继承MavenProject的,artifactID自己写。然后这个时候目录是这样的


 

然后就可以再main(是main不是Main)文件夹里面的java文件夹里面写代码,但是这个第一个坑来了,如果你点击那个java右键添加,里面没有java class的选项,即使你添加了file,后缀是java,也不行,我找了好久都没找到解决方法,一直以为是配置出问题了,结果这里是IDE的锅,这里要去file -> project structure-->module里面设置一下,这个时候就要一个一个的mark as,然后就可以正常些代码了,这个坑找了好久的问题。

 

 

写好代码,如下图 

main.java

 

Part1.java

 

Part2.java

 

 

由于这里是Main要引用到part1part2中的东西,所以在mainpom里面配置一下依赖,part1和part2中的pom由于并没有依赖,所以用自动生成的就可以了

 

这样就会引用到这两个库了,可以在右边的一个控制板中看到(那个九十度倒着的M字样,如果是intellij中的),记得刷新一下

 

 

然后这个时候点Maininstall就可以了,也可以用mvn install的命令

 


Maven依赖包打包生成

这个时候在main里面的target就会生成一个jar包,然后你一运行就会发现,clssNotFound,因为maven打包默认不会把依赖包打进去,找到不到依赖的part1和part2。所以这里就是第二坑,这里在网上查各种复杂的方法,一堆麻烦,而且我也一直以为不用插件,只需要配置一下就可以了,一直没找到。后来找到一个网站,那个配置方法很简单,不过还是用了插件

 

在pom加上这段就行了,会下载一个插件,貌似公司的项目把依赖包打进去也是用这个,maven官方出的插件,值得信赖。

这是这段代码的来源:http://lvjun106.iteye.com/blog/1849803 

最后当然就是搞定咯,但是花了一下午…….

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值