用习惯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目录结构”来生成相关的IT知识。 1. **源码分析** 在软件开发中,源码是程序员用高级编程语言...
2. **集成开发环境(IDE)**: IDE如Visual Studio Code、IntelliJ IDEA、Eclipse、PyCharm等提供了一站式的编码、调试、测试和项目管理功能。它们极大地提高了开发效率,通过代码补全、语法高亮、错误检查等功能提升...
- **刘国华 管理 2017.doc**:可能涉及到项目管理、团队领导或者软件开发过程管理的内容,可能是刘国华在2017年的经验分享或者理论学习笔记。 - **刘国华_e.doc**:文件名中的“_e”可能是某种简称或者指代,内容...
4. **构建工具**:如Maven或Gradle,它们自动处理项目的构建过程,包括编译、打包、依赖管理等,简化了项目的构建流程。 5. **自动化测试工具**:JUnit、Selenium等用于编写和执行测试用例,确保软件的质量和稳定性...
3. **构建工具**:如Maven和Gradle,自动处理项目的构建过程,包括编译、打包、依赖管理和部署。 4. **持续集成/持续部署(CI/CD)工具**:如Jenkins和Travis CI,自动化测试和部署流程,确保代码的质量和稳定性。 5...
比如版本控制工具Git可以帮助团队协作和管理代码历史,IDE(集成开发环境)如Visual Studio Code或IntelliJ IDEA提供了丰富的代码提示和调试功能,构建工具Maven或Gradle则简化了项目的构建流程。此外,性能分析工具...
3. **构建工具**:Maven或Gradle的使用,构建项目和管理依赖。 4. **调试工具**:如Chrome开发者工具的使用,进行前端问题的排查。 5. **测试框架**:JUnit或其他单元测试框架的使用,自动化测试的编写。 6. **持续...
4. **调试技术**:如何利用IDE(如Eclipse、IntelliJ IDEA或Visual Studio Code)进行代码调试,设置断点,分析堆栈信息等。 5. **版本控制**:可能包含了Git的使用,如分支管理、合并冲突解决及提交策略。 工具...
例如,代码编辑器(如Visual Studio Code、Sublime Text)提供了语法高亮、自动补全等功能;版本控制系统(如Git)用于管理源码版本;构建工具(如Maven、Gradle)自动化构建过程;测试框架(JUnit、pytest)帮助...
3. 如何使用调试工具(如Visual Studio Debugger, Chrome DevTools等)来定位和解决问题? 4. 熟悉哪些自动化构建和持续集成工具(如Maven, Jenkins, Travis CI)? 在文件列表中有一个名为1.txt的文件,虽然内容...
这个项目的重点可能集中在Java编程语言上,因此我们可以期待看到一系列与Java相关的代码、笔记、测试用例或者解决问题的实例。 【描述】虽然描述部分只给出了"code_practice_2021",但这通常意味着一个持续的个人或...
11. **版本和依赖管理**:如npm、pip、maven等包管理工具的使用,以及管理项目依赖的方法。 12. **前端技术**:HTML、CSS、JavaScript的最新特性,以及React、Vue、Angular等前端框架的应用。 13. **云计算知识**...
- **mavenRepository**:查找和管理Java依赖的Maven仓库。 - **thymeleaf**:Thymeleaf是一个用于Java应用的现代服务器端模板引擎。 - **Springboot中文文档**:Spring Boot的官方中文文档,方便学习和参考。 - ...