maven管理使用

news2024/11/19 19:22:09

maven基本使用

    • 一、简介
    • 二、配置文件
    • 三、项目结构
      • maven基本标签
      • 实践(例子)
    • 四、pom插件配置
    • 五、热部署
    • 六、maven 外部手动加载jar
    • 打包方式
    • Maven上传私服或者本地

一、简介

  • 基于Ant 的构建工具,Ant 有的功能Maven 都有,额外添加了其他功能.
  • 本地仓库:计算机中一个文件夹,自己定义是哪个文件夹.
  • 中央仓库:网上地址https://repo1.maven.org/maven2/maven (因为国外网站访问较慢,通常会改变)

二、配置文件

  1. 下载maven包

  2. 配置环境变量,创建MAVEN_HOME

    MAVEN_HOME -- 目录:maven>bin
    在path下添加:%MAVEN_HOME%
    
  3. 修改conf/settings.xml中配置文件信息

    1. 修改本地仓库存储位置

      <localRepository>D:/maven/r2/myrepository</localRepository>
      
    2. 修改jdk版本(和本地运行配置jdk版本要一致)

      <profile>
          <id>jdk-1.8</id>
          <activation>
          <activeByDefault>true</activeByDefault>
          <jdk>1.8</jdk>
          </activation>
          <properties>
          <maven.compiler.source>1.8</maven.compiler.source>
          <maven.compiler.target>1.8</maven.compiler.target>
          <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
          </properties>
      </profile>
      
    3. 修改中央仓库镜像(阿里云),可以包含多个仓库

      <mirror>
      <id>alimaven</id>
      <name>aliyun maven</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
      <mirrorOf>central</mirrorOf>
      </mirror>
      

三、项目结构

maven基本标签

  1. groupId> : 公司名.公司网址倒写

  2. artifactId>: 项目名

  3. version>: 版本

  4. packaging> :打包方式
    4.1 (pom :父项目 ) | (war :web项目) | (jar:java项目)

  5. dependencyManagement> 写在父项目 表示私有化 子类项目不能直接继承 可以继承父项目的版本号 ,(父项目也不会引用下载jar包)

  6. <properties>
    <spring-version>5.1.6.RELEASE</spring-version>
    </properties>
    
    1. 由父类声明,统一管理所有子项目的版本号
    2. 子标签名称自定义
    3. ${名字} 引用标签的值

实践(例子)

声明:如需要依赖,前提需要将父工程 install本地或者上传私库

如:子工程直接引用,父工程的mysql

<!--父工程 pom-->
 <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.10</version>
        <relativePath/> 
    </parent>
    <groupId>com.example</groupId><!--基本字段-->
    <artifactId>deploye-test</artifactId>
    <version>1.0.1-SNAPSHOT</version><!--基本字段-->
    <name>deploye-test</name>
    <description>deploye-test</description><!--基本字段-->
    <packaging>pom</packaging><!--基本字段-->
    <properties>
        <java.version>8</java.version>
        <mysql.version>5.1.47</mysql.version>
    </properties>
     <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>${mysql.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>
 

子工程—可直接引用父工程的version

 <parent>
        <groupId>com.example</groupId>
        <artifactId>deploye-test</artifactId>
        <version>1.0.1-SNAPSHOT</version>
    </parent>
    <groupId>com.example</groupId>
    <artifactId>demo3-dependence-test</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>demo3-dependence-test</name>
    <description>demo3-dependence-test</description>
    <packaging>jar</packaging>
    <dependencies>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
    </dependencies>

四、pom插件配置

  1. tomcat 插件配置

    1. 可以动态分布式发布项目

    2. 减少tomcat 的压力

    3. pom.xml 如下:

    <build>
    <plugins>
    			<!-- tomcat插件控制 -->
    			<plugin>
    				<groupId>org.apache.tomcat.maven</groupId>
    				<artifactId>tomcat7-maven-plugin</artifactId>
    				<configuration>
    					<!-- 控制端口 -->
    					<port>8001</port>
    					<!-- 控制发布项目名 -->
    					<path>/reception</path>
    					<uriEncoding>UTF-8</uriEncoding>
    				</configuration>
    			</plugin>
    			<!-- maven插件控制 -->
    			<plugin>
    				<groupId>org.apache.maven.plugins</groupId>
    				<artifactId>maven-compiler-plugin</artifactId>
    				<configuration>
    					<source>1.8</source>
    					<target>1.8</target>
    					<encoding>utf-8</encoding>
    				</configuration>
    			</plugin>
    		</plugins>
    		</build>
    
  2. 修改资源加载配置

    1. 默认maven项目只加载 “ src/main/resources ” 下的xml

    2. 代码如下:

      <build>
      		<!-- 修改解析xml文件默认路径 -->
      		<resources>
      			<resource>
      				<directory>src/main/java</directory>
      				<includes>
      					<include>**/*.xml</include>
      				</includes>
      			</resource>
      			<resource>
      				<directory>src/main/resources</directory>
      				<includes>
      					<include>**/*.xml</include>
      					<include>**/*.properties</include>
      				</includes>
      			</resource>
      		</resources>
      		</build>
      

五、热部署

  1. 将项目部署到 服务器上

  2. 修改tomat/conf/tomcat-users.xml 添加

    <role rolename="manager-gui"/>
    <role rolename="manager-script"/>
    <!-- 设置账户 密码-->
    <user username="tomcat" password="tomcat" roles="manager-gui,manager-script"/>
    
  3. 在maven 项目的pom.xml 中tomcat 插件的里配置

    <plugins>
    <plugin>
    <groupId>org.apache.tomcat.maven</groupId>
    <artifactId>tomcat7-maven-plugin</artifactId>
    <version>2.2</version>
    <configuration>
    <!-- 控制tomcat 端口号-->
    <port>80</port>
    <!-- 项目发布到tomcat 后的名称-->
    <!-- / 相当于把项目发布名称为ROOT -->
    <!-- /abc -->
    <path>/jqk</path>
    <username>tomcat</username>
    <password>tomcat</password>
    <!--服务器的ip-->
    <url>http://192.168.75.133:8080/manager/text</url>
    </configuration>
    </plugin>
    </plugins>
    
  4. 右键项目–> run as --> maven build(以前写过,选择第二个) -->输入

    1. tomcat7:deploy 第一次发布
    2. tomcat7:redeploy 不是第一次发布.

六、maven 外部手动加载jar

如为文件夹,则直接在dos命令mvn install即可

mvn install:install-file 
-DgroupId=com.aliyun  #坐标
-DartifactId=aliyun-sdk-vod-upload #名称
-Dversion=1.4.12 #版本
-Dpackaging=jar #类型
-Dfile=aliyun-java-vod-upload-1.4.12.jar#下载好的jar名


例子

例:
mvn install:install-file -Dfile=E:\taobao-sdk-java-auto-20200403.jar -DgroupId=com.taobao -DartifactId=taobao-sdk-java-auto -Dversion=1.0.1 -Dpackaging=jar

<!--对应pom坐标 -->
<dependency>
    <groupId>com.taobao</groupId>
    <artifactId>taobao-sdk-java-auto</artifactId>
    <version>1.0.1</version>
</dependency>

打包方式

pom: 一般作为依赖资源的父项目使用,用来控制jar包的版本
jar: 一般使用与实际项目工程打包
war: 一般为静态资源进行打包使用war

Maven上传私服或者本地

私服上传 maven–》Lifecycle–>deploy

本地上传 maven–》Lifecycle–>install
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1384470.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

鸿蒙Harmony-层叠布局(Stack)详解

我们总是为了太多遥不可及的东西去拼命&#xff0c;却忘了人生真正的幸福不过是灯火阑珊处的温暖&#xff0c;柴米油盐的充实&#xff0c;人生无论你赚的钱&#xff0c;是多还是少&#xff0c;经历的事情是好还是坏&#xff0c;都不如过好当下的每一天&#xff01; 目录 一&am…

5.2 Android BCC环境搭建(adeb版,下)

五,运行adeb shell adeb shell 其实这个配置比较简单,也就是5.1中的第三节“adeb prepare --full“和该节的”adeb shell",就可以连接我们的android设备,在android设备中或执行bcc工具,来对我们的android环境进行hook了。 六,其他指令 6.1 从开发机移除adeb adeb…

顶级Web应用程序测试工具列表

今天主要列举Web应用程序的工具。 今天的列表仅仅提供索引功能&#xff0c;具体要使用的同学&#xff0c;可以自行搜索哦。 通过web应用程序测试&#xff0c;在web应用程序公开发布之前&#xff0c;会发现网站功能、安全性、可访问性、可用性、兼容性和性能等问题。 Web应用程…

繁花的范总-UMLChina建模知识竞赛第5赛季第3轮

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 参考潘加宇在《软件方法》和UMLChina公众号文章中发表的内容作答。在本文下留言回答。 只要最先答对前3题&#xff0c;即可获得本轮优胜。 如果有第4题&#xff0c;第4题为附加题&am…

基于SSM的法律咨询系统的设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是 目录…

代码随想录 Leetcode242. 有效的字母异位词

题目&#xff1a; 代码&#xff08;首刷看解析 2024年1月14日&#xff09;&#xff1a; class Solution { public:bool isAnagram(string s, string t) {int hash[26] {0};for(int i 0; i < s.size(); i) {hash[s[i] - a];}for(int i 0; i < t.size(); i) {hash[t[i]…

第十六章 i18n国际化

第十六章 i18n国际化 1.什么是i18n国际化2.i18n国际化三要素介绍3.i18n国际化基础示例4.通过请求头实现国际化5.通过语言类型选择实现国际化6.通过JSTL标签库fmt实现国际化 1.什么是i18n国际化 2.i18n国际化三要素介绍 3.i18n国际化基础示例 如果我要准备一个国际化的信息&…

Windows10下 tensorflow-gpu 配置

越来越多的的人入坑机器学习&#xff0c;深度学习&#xff0c;tensorflow 作为目前十分流行又强大的一个框架&#xff0c;自然会有越来越多的新人&#xff08;我也刚入门&#xff09;准备使用&#xff0c;一般装的都是 CPU 版的 tensorflow&#xff0c;然而使用 GPU 跑 tensorf…

初始化数组

一、静态初始化格式&#xff1a; 数据类型[ ] 数组名 new 数据类型[ ]{元素1&#xff0c;元素2&#xff0c;元素3......} 等号后面的new 数据类型可以省略 注意&#xff1a;什么类型的数组只能存放什么类型的数据 直接打印a或b会显示其地址 数组的元素个数&#xff1a;arr…

【JAVA】哪些集合类是线程安全的

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a;JAVA ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言 正文 Vector&#xff1a; HashTable&#xff1a; Collections.synchronizedList()、Collections.synchronizedSet()、Collections.syn…

【Python小技巧】安装ImageMagick配置环境变量解决moviepy报错问题

文章目录 前言一、报错ImageMagick 找不到二、解决步骤1. 安装ImageMagick2. 配置IMAGEMAGICK_BINARY环境变量 总结 前言 抽空玩玩moviepy&#xff0c;结果合成视频时报错&#xff0c;看着网上的解决办法&#xff0c;真是复杂&#xff0c;这里就给出个简单便捷的方法。 一、报…

架构师-软件系统架构图学习总结

--- 后之视今&#xff0c;亦犹今之视昔&#xff01; 目录 早期系统架构图 早期系统架构视图 41视图解读 41架构视图缺点 现代系统架构图的指导实践 业务架构 例子 使用场景 画图技巧 客户端架构、前端架构 例子 使用场景 画图技巧 系统架构 例子 定义 使用场…

ES自动补全

安装IK分词器 要实现根据字母做补全&#xff0c;就必须对文档按照拼音分词。在GitHub上恰好有elasticsearch的拼音分词插件。地址&#xff1a;GitHub - medcl/elasticsearch-analysis-pinyin: This Pinyin Analysis plugin is used to do conversion between Chinese characte…

Spring Boot 3 + Vue 3实战:引入数据库实现用户登录功能

文章目录 一、实战概述二、实战步骤&#xff08;一&#xff09;创建数据库&#xff08;二&#xff09;创建用户表&#xff08;三&#xff09;后端项目引入数据库1、添加相关依赖2、用户实体类保持不变3、编写应用配置文件4、创建用户映射器接口5、创建用户服务类6、修改登录控制…

LeetCode讲解篇之216. 组合总和 III

文章目录 题目描述题解思路题解代码 题目描述 题解思路 使用递归回溯算法&#xff0c;当选择数字num后&#xff0c;在去选择大于num的合法数字&#xff0c;计算过程中的数字和&#xff0c;直到选择了k次&#xff0c;如果数组和等于n则加入结果集 从1开始选择数字&#xff0c;直…

【一个中年程序员的独白】

一个中年程序员的独白 从大四开启程序工作的大门大四与实习梦想与现实毕业论文 从大四开启程序工作的大门 2009 年&#xff0c;我在一所在当地还算小有名气的本科院校读大四。大四专业课很少&#xff0c;准确地应该是没有课了。学校组织各种招聘会&#xff0c;但是好多大厂&am…

高级分布式系统-第6讲 分布式系统的容错性--进程的容错

分布式系统的容错原则既适用于硬件&#xff0c; 也适用于软件。 两者的主要区别在于硬件部件的同类复制相对容易&#xff0c; 而软件组件在运行中的同类复制&#xff08; 进程复制&#xff09; 涉及到更为复杂的分布式操作系统的容错机制。 以下是建立进程失效容错机制的一些基…

点击随机红点的简单游戏(pygame)

import pygame import sys import random# 初始化 Pygame pygame.init()# 设置窗口大小 width, height 800, 600 screen pygame.display.set_mode((width, height)) pygame.display.set_caption("Click the Red Dot")# 定义颜色 black (0, 0, 0) red (255, 0, 0)…

XCTF:hello_pwn[WriteUP]

使用checksec查看ELF文件信息 checksec 4f2f44c9471d4dc2b59768779e378282 这里只需要注意两个重点&#xff1a; Arch&#xff1a;64bit的文件&#xff0c;后面写exp的重点 Stack&#xff1a;No canary found 没有栈溢出保护 使用IDA对ELF文件进行反汇编 双击左侧的函数栏…

推荐github热榜项目_crewAI

1 项目地址 https://github.com/joaomdmoura/crewAI 2 功能 通过设置多个智能体&#xff0c;协同解决问题&#xff0c;以处理复杂任务&#xff1b;这种方法的实现方式是将一个任务的输出作为另一个任务的输入。它的优势在于小而有效&#xff0c;原理直观易懂&#xff0c;而且…