您现在的位置是:首页 >学无止境 >Maven介绍网站首页学无止境
Maven介绍
Java代码编译,是使用javac命令。当项目特别大的时候,用javac命令编译项目就很麻烦。
Java项目的编译可以用一个公式来说明:
Source + resource + dependencies => targets
手动编译的困难主要在三个地方:
1 源代码,源代码可能有上百个文件夹,上千个java文件以及图片、xml、json等资源文件。如果用javac,源代码清单会很长,而且增加源代码或者删除源代码需要手动修改源代码清单。
2 类路径。一个项目可能依赖上百个第三方库。而且这些类库之间有依赖关系。此外依赖之间还有版本冲突。
3 编译目标。一个项目可能编译成多个产品。比如mysql版,Oracle版。如用javac编译,清单文件太多,以致维护困难。
虽然说用开发工具可以很容易编译java代码。但是有很多情况下开发工具不能使用。就比如linux服务器环境,这种环境下没有图形界面,只能使用命令行。
Maven打包时源代码中的非java文件(也叫资源文件)不能进入jar包。所以需要将源码中的所有资源文件放入src/main/resources中,java文件放入src/main/java中。将两种文件区分开来。这样就能够正常打包。
Maven的出现解决了上述三个问题。
源代码问题
Maven默认
src/main/java为源代码目录。
src/main/resource为资源文件目录
src/test/java为测试源代码目录
src/test/resource为测试资源目录
类路径问题
Maven使用配置文件来管理依赖。只需要写好配置,maven便会从中央库服务器或者其他类库服务器来下载第三方的依赖。如果下载的第三方库还依赖别的库,那么maven会递归下载完所有的依赖。
编译目标问题
Maven使用profile来生成不同的编译目标。同一套代码可以编译为开发版、测试版、发行版等等。Profile可以自定义。
Maven项目分各种类型,常见的有三种项目
1 pom项目,pom项目是干啥的呢?Pom项目可以理解为一个容器,用来装其他项目的,也叫父项目。
2 jar项目,其实就是普通的java项目,生成的目标文件是jar包。
对于jar项目,有多种变体,比如ejb,ejb项目是生成两个jar文件的,一个是客户端jar,一个是jar。客户端jar比jar少了实现类,具体需要配置。
3 war项目,其实就是web项目,生成的目标文件是war包。
当然,还有ejb,ear,zip等其他不常见的项目类型。
POM项目
Pom项目作为父容器,其核心功能就是子模块加进来,然后统一管理。
怎样加子模块?
<modules>
<module>loan-data</module>
<module>loan-site</module>
<module>loan-web</module>
<module>loan-ws</module>
<module>loan-mweb</module>
</modules>
这样就可以了。