第一节:Maven 仓库概念
Maven 远程仓库配置文件:
$M2_HOME/lib/maven-model-builder-3.3.3.jar 文件:org\apache\maven\model\pom-4.0.0.xml <repositories> <repository> <id>central</id> <name>Central Repository</name> <url>https://repo.maven.apache.org/maven2</url> <layout>default</layout> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories>
可以看到是从这里找的:
第二节:Maven 依赖特性
依赖传递和依赖选择:
user-service依赖于spring-core,spring-core依赖于commons-logging,user-service也就依赖于commons-logging
A->B->-C->X,A依赖X,路径为三层,A->D->X,A也依赖X,路径为两层,这时只会下载A->D->X中的X jar包,不然jar包就重复了;
但是假设路径都一样,A->B->X和A->C->X,最先声明原则,只会下载A->B->X的Xjar包,后面A->C->X就不会再下载X了;
三、下面是一个例子
我们构建一个user项目(这里还是java项目jar,不是web),user项目分为两个模块,user-dao和user-service,
后面user-service中要使用到user-dao中的类等。
1.先建user-dao项目:
使用mybatis,log4j等,工程结构:
pom.xml:
<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.cy.user</groupId> <artifactId>user-dao</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.3.0</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.22</version> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> </dependencies> </project>
UserDao.java:
package com.cy.user.dao; import com.cy.user.entity.User; public interface UserDao { public User login(User user); }
User.java:
package com.cy.user.entity; /** * 用户实体 * @author Administrator * */ public class User { private Integer id; // 编号 private String userName; // 用户名 private String password; // 密码 public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }