用习惯Visual Studio的人一开始学习Maven可能很难以理解。
VS里面有个solution的概念,一个sln可以包含多个project,这些project之间的依赖都可以通过可视化的方式添加。如下图:
这里有三个项目,main依赖dao和domain,dao依赖domain。
在Maven中没有solution的概念,一般是通过一个父工程来充当管理子工程的角色,达到和solution同样的目的。
这种关系在Maven中如何表达呢,看下图:
图中有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还是略显不成熟。
相关推荐
项目管理利器——maven,技术开发学习类稳定档案顶顶顶顶
maven学习笔记maven学习笔记maven学习笔记
适用于任何学习项目管理与SSM框架中,需要了解Maven技术的人群,希望这篇文章能对大家的学习有所帮助! 此文章包含Maven介绍与安装、Maven在工程开发中的相关配置、Maven如何进行工程测试、Maven的以来冲突调节原则...
Maven3实战笔记08——Maven反应堆。
maven管理的web项目maven管理的web项目maven管理的web项目maven管理的web项目maven管理的web项目
Maven工具的Eclipse插件。 笔者在里面添加了一个README文件,里面是 SOURCEFORGE 网站提供的下载。 SOURCEFORGE 网站的下载,里面有多个版本,需要逐个下载。 笔者只是将网站上下载下来的东西打了个包。
Maven3实战笔记04——Maven的生命周期和插件。
1: 通过配置MAVEN_HOME 和 %% %MAVEN_HOME%\bin 然后进行mvn -version 测试 掌握 -Xms 与 -Xmx的相关配置 2: Maven目录分析: 2.1: bin: 含有mvn运行的脚本 2.2: boot:含有plexus-classworlds类加载器框架 ...
Maven3实战笔记,介绍maven构建项目的步骤以及相关内容
Java使用Maven导入Spring依赖
各种maven需要的lib依赖.rar各种maven需要的lib依赖.rar各种maven需要的lib依赖.rar各种maven需要的lib依赖.rar各种maven需要的lib依赖.rar各种maven需要的lib依赖.rar各种maven需要的lib依赖.rar各种maven需要的lib...
经过近一个月的研究,完成了对maven、git、jenkins、tomcat的集成,超详细的搭建步骤,适合新人研究参考
NULL 博文链接:https://bing-zz.iteye.com/blog/1460546
Maven3实战笔记——03Maven仓库。
Maven 教程:基础篇——尚硅谷学习笔记 2022年
在JAVA界,可能大家比较熟悉ANT,它提供了强大的功能,让我们的开发工作变得如此有趣,APACHE又推出了新一代项目管理工具——MAVEN。它提供了比ANT更强大的管理功能,可以使用命令行工具来生成一个新的项目,管理已...
这是一个springboot+maven写的demo,主要演示springboot项目通过maven插件,将依赖与配置文件打包到jar包外部,实现灵活的项目管理.仅供参考学习
maven项目搭建 依赖、继承、聚合关系
在Visual Studio Code中实现Maven项目的样板 用于创建此样板的步骤(基于Windows 8.1): 在命令提示符下: mvn原型:生成-DgroupId =“ com.companyname.appname” -DartifactId =“ appname” -...
介绍如何使用 Maven 管理项目的依赖关系,以及如何通过声明式配置来简化项目的构建和管理。强调 Maven 的生命周期和插件机制,以及如何使用插件扩展 Maven 的功能。 第三部分:Maven 的优势和应用 探讨 Maven 在...