首页 > 其他分享 >项目管理工具Maven(一)

项目管理工具Maven(一)

时间:2024-03-17 15:31:29浏览次数:29  
标签:maven java 项目 项目管理 Maven 工具 HelloFriend Hello

1.Maven的相关概念

1.1为什么要用maven?

在今天的 Javaweb 开发领域,有大量的第三方框架和工具可以供我们使用。要使用这些 jar 包最简单 的方法就是复制粘贴到 WEB-INF/lib 目录下。但是这会导致每次创建一个新的工程就需要将 jar 包重复复 制到 lib 目录下,从而造成工作区中存在大量重复的文件,让我们的工程显得很臃肿。 而使用 Maven 后每个 jar 包本身只在本地仓库中保存一份,需要 jar 包的工程只需要以坐标的方式 简单的引用一下就可以了。不仅极大的节约了存储空间,让项目更轻巧,更避免了重复文件太多而造成 的混乱。

  • IDE?Eclipse?IDEA?
    • 手工操作较多,编译、测试、部署等工作都是独立的,很难一步完成
    • 每个人的IDE配置都不同,很容易就出错出现本地代码换个地方编译
  • Ant?
    • 没有一个约定的目录结构
    • 必须明确让ant做什么,什么时候做,然后编译,打包
    • 没有生命周期,必须定义目标及其实现的任务序列
    • 没有集成依赖管理
  • Maven?
    • 拥有约定,知道你的代码在哪里,放到哪里去
    • 拥有一个生命周期,例如执行 mvn install 就可以自动执行编译,测试,打包等构建过程
    • 只需要定义一个pom.xml,然后把源码放到默认的目录,Maven帮你处理其他事情
    • 拥有依赖管理,仓库管理

1.2什么是maven,maven有什么用?

  • 翻译为“专家”,“内行”
  • Maven是跨平台项目管理工具。主要服务于基于Java平台的项目构建,依赖管理和项目信息管理。
  • 什么是理想的项目构建?
    • 高度自动化,跨平台,可重用的组件,标准化的
  • 什么是依赖?为什么要进行依赖管理?
    • 自动下载,统一依赖管理
    • A1.0   依托于  B 2.0  依托于    C3.0
  • 有哪些项目信息
    • 项目名称描述等,开发人员信息,开发者信息等

1.3什么是依赖管理?

对第三方依赖包的管理,可以连接互联网下载项目所需第三方jar包。

对自己开发的模块的管理,可以像引用第三方依赖包一样引用自己项目的依赖包。

1.4什么是项目构建?

项目构建:是一个从编写源代码到编译、测试、运行、打包、部署的过程。

传统项目和maven项目构建的两种方式

传统项目:

打开Idea编写源代码和配置文件,对源代码进行编译,可以使用Junit进行单元测试,把项目打成war包,部署到Tomcat服务器中运行。

maven项目:

maven将项目构建过程进行标准化,每个阶段都可以使用一个命令来完成。

清理 --> 编译 --> 测试 --> 报告 --> 打包 --> 部署

好处:

可以通过命令完成项目构建。(测试:使用mvn tomcat:run的命令来发布运行项目)

maven对每个构建阶段进行规范,有利于大型团队协作开发。

1.5maven的应用场景

maven的应用场景,开发人员只要按着maven标准的目录结构进行开发即可,然后提交代码。在测试服务器上拉取Java源码,然后可以使用maven的自动化项目构建完成项目的清理、编译、测试、打包和安装部署等。

1.6 maven 模型

2.初识maven

2.1 maven的安装

2.1.1 安装准备

2.1.2maven的目录分析

bin:含有mvn运行的脚本

boot:含有plexus-classworlds类加载器框架

conf:含有settings.xml配置文件

lib:含有Maven运行时所需要的java类库

LICENSE.txt, NOTICE.txt, README.txt针对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 目录文件

  • 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>com.qcby.maven</groupId>
  <artifactId>Hello</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <name>Hello</name>
  
	<dependencies>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.9</version>
			<scope>test</scope>
		</dependency>		
		
	</dependencies>
</project>

​​​​​​​2.2.3创建Hello.java文件

在src/main/java/com/qcby/maven目录下新建文件Hello.java

package com.qcby.maven;
public class Hello {
	public String sayHello(String name){
		return "Hello "+name+"!";
	}
}

2.2.4 ​​​​​​​创建HelloTest.java文件

在/src/test/java/com/qcby/maven目录下新建测试文件HelloTest.java

package com.qcby.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的项目操作

  1. 打开cmd命令行,进入Hello项目根目录执行 mvn compile命令,查看根目录变化
  2. cmd 中继续录入mvn clean命令,然后再次查看根目录变化
  3. cmd 中录入 mvn clean compile命令, 查看根目录变化
  4. cmd 中录入 mvn clean test命令,查看根目录变化
  5. cmd 中录入 mvn clean package命令,查看根目录变化
  6. cmd 中录入 mvn clean install 查看仓库会把项目安装到仓库

2.3 maven的第二个项目

2.3.1 按照约定创建Maven项目目录

HelloFriend

 --src

 -----main

 ----------java

 ----------resources

 -----test

 ---------java

 ---------resources

 --pom.xml

​​​​​​​2.3.2 在项目HelloFriend根目录建立pom.xml

Maven---》本地仓库------》远程仓库(中央仓库(境外的),阿里云(国内 弊端:热点数据下载不下来),腾讯云,华为云)

        在项目HelloFriend根目录建立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.qcby.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>com.qcby.maven</groupId>
			<artifactId>Hello</artifactId>
			<version>0.0.1-SNAPSHOT</version>
			<scope>compile</scope>
		</dependency>		
		
	</dependencies>
</project>

2.3.3 创建HelloFriend.java文件

在src/main/java/com/qcby/maven目录下新建文件HelloFriend.java

package com.qcby.maven;

import com.qcby.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/com/qcby/maven目录下新建测试文件HelloFriendTest.java

package com.qcby.maven;

import static junit.framework.Assert.assertEquals;

import org.junit.Test;

import com.qcby.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);		

	}
}
  1. 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包

标签:maven,java,项目,项目管理,Maven,工具,HelloFriend,Hello
From: https://blog.csdn.net/weixin_69039908/article/details/136710919

相关文章

  • 项目管理工具maven(五)-私服
    4.maven私服架构 4.1maven私服介绍    4.1.1私服介绍正式开发,不同的项目组开发不同的工程。maven-dao工程开发完毕,发布到私服maven-service从私服下载dao。公司在自己的局域网内搭建自己的远程仓库服务器,称为私服,私服服务器即是公司内部的maven远程仓库,......
  • 微信小程序云开发教程——墨刀原型工具入门(表单组件)
      引言作为一个小白,小北要怎么在短时间内快速学会微信小程序原型设计?“时间紧,任务重”,这意味着学习时必须把握微信小程序原型设计中的重点、难点,而非面面俱到。要在短时间内理解、掌握一个工具的使用,最有效的方式莫过于临摹:看实例视频教程,并跟着教程在实例素材上操作。......
  • Java面试题:详解单例模式与内存泄漏?内存模型与volatile关键字的实操?并发工具包与并发框
    Java核心技术:设计模式、内存管理与并发编程深度解析在Java技术领域,设计模式、内存管理和并发编程是构建高效、稳定系统的关键。本文将通过三道综合性面试题,深入探讨这些核心知识点,帮助读者理解其背后的原理,并在实际编程中避免常见错误。面试题一:单例模式与内存泄漏问题核......
  • Maven学习总结
    学习课程视频链接:尚硅谷新版Maven教程(高效入门maven,上手又快又稳)_哔哩哔哩_bilibili 尚硅谷新版SSM框架全套视频教程,Spring6+SpringBoot3最新SSM企业级开发_哔哩哔哩_bilibili 以下是一些零碎的知识点总结:maven的gvap属性:groupid:com.{公司/BU}.业务线.{子业务线},最多4级......
  • 推荐收藏!5款很好用的免费PDF分割工具
    在数字化时代,PDF文件因其稳定性和广泛兼容性而成为信息共享的首选格式。然而,随着PDF文件在工作和日常生活中的广泛应用,我们经常需要对这些文件进行管理,其中之一便是分割操作。无论是为了便于分享、打印还是归档,将一个多页的PDF文件拆分成多个单独的文件成为了一项常见的需求。......
  • SQLpage 基于sql 开发website 的工具
    SQLpage属于一个低代码工具,让我们可以通过sql开发web站点包含的特点简单美观快速包含了比较丰富的web组件同时也提供了一些基本的功能,比如认证,变量,运行sql,读取文件面向的人群业务分析 可以基于动态处理数据科学 原型以及分析市场人员工程师产品管理人员教育......
  • 修改Maven配置项
    0.打开Maven安装目录>conf>settings.xml1.修改本地仓库地址(默认是Default:${user.home}/.m2/repository也就是用户目录下的/.m2/repository下)修改为自己的本地仓库地址<localRepository>xxx</localRepository>2.了解servers当你将仓库发布到远程仓库时,在这里设置s......
  • 软件项目管理资料完整版(规格说明书,详细设计,测试计划,验收报告)
       前言:在软件开发过程中,文档资料是非常关键的一部分,它们帮助团队成员理解项目需求、设计、实施、测试、验收等各个环节,确保项目的顺利进行。以下是针对您提到的各个阶段的文档资料概述:所有资料获取:点击获取开发阶段需求规格说明书:详细描述了软件系统的功能需求、非......
  • Desmos 3D| 向量计算的工具化
    前言计算示例全屏......
  • React — zustand状态管理工具
    zustand是一个用于状态管理的简单而强大的库,它可以与React一起使用。它提供了一种简单的方式来管理组件的状态,并且遵循了ReactHooks的使用规范。使用zustand可以方便地创建和共享状态,同时还能够实现状态的订阅和更新。通过zustand,你可以创建自定义的状态钩子,并在组件中......