说明:
maven根据pom.xml文件,把它转化成项目对象模型(POM),这个时候要解析依赖关系,然后去相对应的maven库中查找到依赖的jar包。
在clean,compile,test,package等阶段都有相应的Plug-in来做这些事情。
而这些plug-in会产生一些中间产物。
在maven解压后的位置E:\maven\bin有一个bin文件夹,里面有
一个文件m2.conf文件中指明了仓库的存储位置。
其中settings.xml文件中
这个说明了仓库中的位置。
这里的插件就是执行maven的各种命令所需要的插件
maven坐标的主要组成
groupId:定义当前maven项目属于哪个项目,一般是公司域名
artifactId:定义实际项目中的某一个模块,实际的项目名称
version:定义当前项目的当前版本
packaging:定义当前项目的打包方式
根据这些坐标,在maven库中可以找到唯一的jar包
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.bw</groupId>
<artifactId>CCTV2</artifactId>
<version>0.0.1-SNAPSHOT</version>
</project>
在CCTV2中访问CCTV1中的方法,在传统的java项目中,是没有办法去访问到另外一个项目中的类和方法.
mvn compile
使用maven的特性去访问
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <groupId>com.bw</groupId> <artifactId>CCTV2</artifactId> <version>0.0.1-SNAPSHOT</version> <dependencies> <dependency> <groupId>com.bw</groupId> <artifactId>CCTV1</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> </dependencies> </project>
只要这个命令执行完没有报错,就说明,在CCTV2访问到了CCTV1里的方法.
修改CCTV2的pom文件,添加junit支持
roject xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.bw</groupId> <artifactId>CCTV2</artifactId> <version>0.0.1-SNAPSHOT</version> <dependencies> <dependency> <groupId>com.bw</groupId> <artifactId>CCTV1</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.0</version> </dependency> </dependencies> </project>
在CCTV3中,访问CCTV1中的方法.
用上面的传统的依赖的方式去做,应该在pom文件中,引入一次cctv1,就可以使用CCTV1中的方法.
修改pom文件
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.bw</groupId> <artifactId>CCTV3</artifactId> <version>0.0.1-SNAPSHOT</version> <dependencies> <dependency> <groupId>com.bw</groupId> <artifactId>CCTV2</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> </dependencies>
</project>
mvn compile
在CCTV3中,引入CCTV2,想访问CCTV1中的方法,
重点:我们是从资源库中找到的CCTV2
解决方式,去把CCTV2重新安装到资源库中.
解决错误: 是因为在资源库中找到了CCTV2,所以编译通过
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.bw</groupId> <artifactId>CCTV4</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>pom</packaging> <dependencies> <dependency> <groupId>com.bw</groupId> <artifactId>CCTV1</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> </dependencies> </project>
执行mvn install命令
在CCTV5这个项目中,调用CCTV1这个项目的中的方法
让CCTV5依赖CCTV4去;
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.bw</groupId> <artifactId>CCTV5</artifactId> <version>0.0.1-SNAPSHOT</version> <parent> <groupId>com.bw</groupId> <artifactId>CCTV4</artifactId> <version>0.0.1-SNAPSHOT</version> </parent> </project>
执行 mvn compile命令
原文:https://www.cnblogs.com/JBLi/p/10562034.html