ToB企服应用市场:ToB评测及商务社交产业平台
标题:
Maven架构项目管理工具
[打印本页]
作者:
泉缘泉
时间:
2025-2-15 23:11
标题:
Maven架构项目管理工具
1.1什么是Maven
翻译为“专家”,“老手”
Maven是
跨平台
的
项目管理
工具。主要服务于基于Java平台的项目构建,依赖管理和项目信息管理。
什么是理想的项目构建?
高度自动化,跨平台,可重用的组件,尺度化的
什么是依赖?为什么要进行依赖管理?
自动下载,同一依赖管理
A1.0 依托于 B 2.0 依托于 C3.0
有哪些
项目信息
?
项目名称描述等,开发人员信息,开发者信息等
依赖管理
依赖管理是Maven的核心功能之一。Maven可以自动下载并管理项目所需的第三方依赖包,比如JAR文件。同时,它也支持对自己开发的模块进行管理,类似于引入第三方依赖包一样引用自己的模块。
举个例子,一个项目A依赖于B,而B又依赖于C,那么通过Maven的依赖管理,C将被自动下载,并且能够在项目构建时自动办理依赖关系。
项目信息
Maven不但仅管理代码,还能帮助存储与项目相干的各种信息。
1.2 什么是依赖管理
依赖管理指的是Maven怎样管理项目所需的外部依赖。通过Maven,开发者不必要手动下载和设置这些依赖,它能够自动从远程仓库下载并在本地存储。对于自己开发的模块,Maven也提供了类似的依赖管理功能,可以轻松地引用自己模块的版本。
1.3 什么是项目构建
项目构建是指从编写源代码到编译、测试、打包、摆设的整个过程。在传统的项目构建中,开发者必要手动完成这些步骤,这既繁琐又容易堕落。
传统项目构建
Maven项目构建
Maven将项目构建过程尺度化,可以通过简单的命令完成所有步骤。Maven的构建过程包括:
这种尺度化的构建过程对于团队协作非常有益,避免了每个开发者不同的设置和操纵方式带来的问题。
1.4 Maven的应用场景
Maven在大型团队和复杂项目中发挥着重要作用。开发人员只需按Maven的尺度目录结构进行开发,并提交代码。在测试服务器上,Maven会自动拉代替码并进行构建,完成项目的清算、编译、测试、打包和摆设等工作。
1.5 为什么使用Maven
IDE?Eclipse?IDEA?
手工操纵较多,编译、测试、摆设等工作都是独立的,很难一步完成
每个人的IDE设置都不同,很容易就堕落出现本地代码换个地方编译
Ant?
没有一个约定的目录结构
必须明确让ant做什么,什么时间做,然后编译,打包
没有生命周期,必须定义目的及其实现的任务序列
没有集成依赖管理
Maven?
拥有约定,知道你的代码在哪里,放到哪里去
拥有一个生命周期,比方实行 mvn install 就可以自动实行编译,测试,打包等构建过程
只必要定义一个pom.xml,然后把源码放到默认的目录,Maven帮你处理其他事情
拥有依赖管理,仓库管理
1.6 Maven模型
Maven项目基于**POM(Project Object Model)**模型,它通过一个名为pom.xml的设置文件来定义项目的基本信息、依赖、插件等。这个文件可以看作是Maven项目的核心,所有的构建和依赖关系都通过它进行管理。
2. 初识Maven
2.1 Maven安装
2.1.1 安装预备
2.1.2 Maven安装目录分析
解压Maven后,目录结构如下:
2.1.3 设置Maven环境变量
设置MAVEN_HOME环境变量
升级时只必要下载最新版本,解压缩重新设置MAVEN_HOME环境变量即可
设置MAVEN_OPTS环境变量
-Xms128m -Xmx512m
设置用户范围的settings.xml
%MAVEN_HOME%/conf/settings.xml 全局的
~/.m2/settings.xml 单个用户的
设置MAVEN_HOME环境变量,把maven的解压后的路径添加为变量值
设置Path环境变量,把 %MAVEN_HOME%\bin 添加到Path的变量值末尾,与前面的内容用 ; 隔开,如图:
设置MAVEN_OPTS运行环境变量大小,(办理大型项目内存溢出的问题)
(找到命令改参数治标不治本)
-Xms128m -Xmx512m
验证设置是否完成
2.2 Maven的第一个项目
2.2.1按照约定创建Maven项目目录
src/main/java —— 存放项目的.java文件
src/main/resources —— 存放项目资源文件,如spring, mybatis设置文件
src/test/java —— 存放所有测试.java文件,如JUnit测试类
src/test/resources —— 测试资源文件
target —— 项目输出位置
pom.xml
2.2.2.在项目Hello根目录创建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>cn.tx.maven</groupId>
<artifactId>Hello</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.9</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
复制代码
2.2.3 编写Java代码
在src/main/java/cn/tx/maven/目录下创建Hello.java:
package cn.tx.maven;
public class Hello {
public String sayHello(String name) {
return "Hello " + name + "!";
}
}
复制代码
2.2.4 编写单位测试
在src/test/java/cn/tx/maven/目录下创建HelloTest.java:
package cn.tx.maven;
import org.junit.Test;
import static junit.framework.Assert.*;
public class HelloTest {
@Test
public void testHello() {
Hello hello = new Hello();
String results = hello.sayHello("maven");
assertEquals("Hello maven!", results);
}
}
复制代码
2.2.5 使用Maven进行项目构建
在命令行中进入项目根目录,实行以下命令:
打开cmd命令行,进入Hello项目根目录实行 mvn compile命令,检察根目录变化
cmd 中继续录入mvn clean命令,然后再次检察根目录变化
cmd 中录入 mvn clean compile命令, 检察根目录变化
cmd 中录入 mvn clean test命令,检察根目录变化
cmd 中录入 mvn clean package命令,检察根目录变化
cmd 中录入 mvn clean install 检察仓库会把项目安装到仓库里
2.3 Maven的第二个项目
通过创建第二个项目HelloFriend,了解怎样引用其他项目的依赖。
2.3.1 创建项目目录
创建HelloFriend项目,并按照尺度Maven目录结构进行构造。
2.3.2 创建pom.xml
在HelloFriend的根目录创建pom.xml,并引用Hello项目作为依赖:
<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>cn.tx.maven</groupId>
<artifactId>HelloFriend</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>HelloFriend</name>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.9</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>cn.tx.maven</groupId>
<artifactId>Hello</artifactId>
<version>0.0.1-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
</dependencies>
</project>
复制代码
2.3.3 编写Java代码
在HelloFriend项目中,引用Hello类进行构建:
package cn.tx.maven;
import cn.tx.maven.Hello;
public class HelloFriend {
public String sayHelloToFriend(String name){
Hello hello = new Hello();
String str = hello.sayHello(name)+" I am "+this.getMyName();
System.out.println(str);
return str;
}
public String getMyName(){
return "John";
}
}
复制代码
2.3.4.创建HelloFriendTest.java文件
在/src/test/java/cn/tx/maven目录下新建测试文件HelloFriendTest.java
package cn.tx.maven;
import static junit.framework.Assert.assertEquals;
import org.junit.Test;
import cn.tx.maven.Hello;
public class HelloFriendTest {
@Test
public void tesHelloFriend(){
HelloFriend helloFriend = new HelloFriend();
String results = helloFriend.sayHelloToFriend("zhangsan");
assertEquals("Hello zhangsan! I am John",results);
}
}
复制代码
2.3.5 测试打包HelloFriend项目
在HelloFriend目录下实行命令mvn package
系统报错提示:Could not find artifact cn.tx.maven:Hello:jar:0.0.1-SNAPSHOT,表现无法找到HelloFriend所依赖的Hello 0.0.1-SNAPSHOT.jar
故此我们必要重新构建第一个项目Hello并安装到数据仓库,在命令行Hello根目录下实行mvn clean install
对Hello项目进行清算并安装后,对HelloFriend项目再次进行打包
可以看到本次打包成功,阐明HelloFriend项目已经可以加载Hello项目所打包的jar包
2.4. Maven仓库设置
2.4.1. Maven仓库概念
何为Maven仓库?
用来同一存储所有Maven共享构建的位置就是仓库
Maven仓库结构
根据Maven坐标定义每个构建在仓库中唯一存储路径
groupId/artifactId/version/artifactId-version.packaging
仓库的分类
本地仓库
• ~/.m2/repository/ 可修改
• 每个用户只有一个本地仓库
远程仓库
• 中央仓库:Maven默认的远程仓库
http://repo1.maven.org/maven2
• 私服:是一种特殊的远程仓库,它是架设在局域网内的仓库
2.4.2. Maven本地仓库设置
1. 全局本地仓库(所有操纵系统用户均影响)
%MAVEN_HOME%\conf\settings.xml文件,修改该文件会影响所有使用该Maven的用户的本地仓库,比方:
2. 用户本地仓库(仅影响使用该设置文件的用户或程序)
该文件可以在任意目录,比方:
3. 修改设置文件设置Maven本地仓库(以全局设置为例)
编辑D:\TOOLS\maven\apache-maven-3.5.4\conf\settings.xml文件
找到如下位置:
修改为:
保存退出即可
以上设置表现所有使用该Maven的程序或用户,如未单独设置,则默认加载以上目录的本地库文件;
Ps:课程提供本地库文件为shoprapository.zip,如果遇到打包不成功,jar包无法下载等环境,优先进行本地库设置,避免因网络导致的maven依赖包问题.
2.5. IDEA整合Maven项目
2.5.1. IDEA的Maven全局设置
启动IDEA后找到Settings
以上设置完成表现在本idea上,所有项目如未对Maven的设置进行单独设置,则默认均使用该Maven版本和本地库设置;
2.5.2. IDEA创建Maven的Java项目
至此Maven的Java项目创建完成
测试Maven的jar包引入
以上,在IDEA上使用Maven进行Java项目的创建及测试已完成!
2.5.3 IDEA创建Maven的Java web项目
设置完毕后会进行web项目的初始化,初始化过程取决于本地库是否已生成及网络环境,推荐使用课程提供的Maven本地库
如果创建项目速度非常慢,并且在Generating project in Batch mode卡住,则进行全局设置如下:
-DarchetypeCatalog=local
以上web项目则创建成功,接下来必要进行一些设置来确定web项目可以正常运行
添加war包的方法:
设置web服务器
添加本地tomcat设置
测试项目运行
至此,在IDEA上使用Maven设置的Java web工程已经完成设置
2.5.4. IDEA导入既有Maven项目
以导入刚才的Maven项目的例子做示范:
导入引入依赖Hello项目的HelloFriend项目,可以看到Hello项目已经被打成jar包引用到HelloFriend的Maven依赖中
2.6. Maven项目视图
Maven项目视图主要用于检察该maven项目的各项属性,同时也可以进行一些常见的maven的操纵,比如打包,清算,测试等等;
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4