学习笔记——Maven怎么管理项目间依赖,与Visual studio的对比

学习笔记——Maven如何管理项目间依赖,与Visual studio的对比。

用习惯Visual Studio的人一开始学习Maven可能很难以理解。

VS里面有个solution的概念,一个sln可以包含多个project,这些project之间的依赖都可以通过可视化的方式添加。如下图:


学习笔记——Maven怎么管理项目间依赖,与Visual studio的对比
这里有三个项目,main依赖dao和domain,dao依赖domain。

 

在Maven中没有solution的概念,一般是通过一个父工程来充当管理子工程的角色,达到和solution同样的目的。

这种关系在Maven中如何表达呢,看下图:


学习笔记——Maven怎么管理项目间依赖,与Visual studio的对比
 图中有4个工程,parent工程就充当了solution的作用,一般在它里边并不会写代码,只是用来组织子工程。

来看一下它的pom.xml怎么写:

<?xml version="1.0" encoding="UTF-8"?>
<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>parent</groupId>
    <artifactId>parent</artifactId>
    <packaging>pom</packaging>
  <version>1.0</version>

  <modules>
    <module>domain</module>
    <module>dao</module>
    <module>main</module>
  </modules>
</project>

 

首先父工程的packaging必须设置为pom,这个比较特殊,子工程一般设置为jar或者war。然后在modules里面指定子工程。

最后配置子工程之间的依赖,以dao为例,dao依赖domain:

<?xml version="1.0" encoding="UTF-8"?>
<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">
  <parent>
    <artifactId>parent</artifactId>
    <groupId>parent</groupId>
    <version>1.0</version>
  </parent>
  <modelVersion>4.0.0</modelVersion>

  <artifactId>dao</artifactId>
  <packaging>jar</packaging>

  <dependencies>
    <dependency>
      <groupId>parent</groupId>
      <artifactId>domain</artifactId>
      <version>1.0</version>
    </dependency>
  </dependencies>

</project>

 

这里直接配置对domain的依赖就可以了。Maven会根据你配置的依赖关系树对所有工程进行编译。

 

Maven最重要的功能之一就是自动管理依赖,这一点在原生的VS里面并没有支持。

比如说A依赖B,B又依赖了一大堆工程。Maven只需要告诉A依赖B,其他那一大堆都会被自动下载下来,并且可以自动得到更新。

VS里面就要崩溃了,一个一个手动来添加吧。

 

不过微软已经关注到这方面的问题,提供了Nuget这个项目,但是功能上来说相对Maven还是略显不成熟。