当前位置: 首页 > article >正文

MAVEN学习

Maven 是项目管理工具,对软件项目提供构建与依赖管理,maven为Java项目提供了统一的管理方式,已成为业界标准。

maven官网:Welcome to Apache Maven – Maven

WIN系统MAVEN 3.9.1安装

1. 下载

下载官网地址:Index of /dist/maven/maven-3 (apache.org)

image-20240824085514325

百度网盘:

通过网盘分享的文件:apache-maven-3.9.1-bin.zip
链接: https://pan.baidu.com/s/1VKmxrU5Hg6mbEUc43wjQUw 提取码: aua6
–来自百度网盘超级会员v5的分享

2. 配置maven

将下载好的maven文件进行解压,解压之后如下图所示:

image-20240824091807072

新建一个repository文件夹,用于存放本地的maven仓库

配置环境变量

 变量名:MAVEN_HOME
 变量值:C:\Users\A2\Desktop\apache-maven-3.9.1-bin\apache-maven-3.9.1
     //此处的变量值为你存放Maven的解压路径
 变量名:M2_HOME
 变量值:C:\Users\A2\Desktop\apache-maven-3.9.1-bin\apache-maven-3.9.1\repository
     //此处的变量值为你存放Maven的解压后目录中的文件夹的路径
     //很多自动依赖的系统,如springboot、springcloud引用了该地址,建议配置上

path中新建

%MAVEN_HOME%\bin

MAVEN配置阿里镜像源

打开conf目录下的settings.xml文件,在<mirrors>添加阿里云仓库

    <!-- 阿里云仓库 -->
    <mirror>
      <id>alimaven</id>
      <mirrorOf>central</mirrorOf>
      <name>aliyun maven</name>
      <url>https://maven.aliyun.com/repository/public</url>
    </mirror>

image-20240824100525692

配置默认的JDK版本

<profile>   
      <id>jdk15.0.2</id>
      <activation>   
          <activeByDefault>true</activeByDefault>
          <jdk>jdk15.0.2</jdk>   
      </activation>
      <properties>
          <maven.compiler.source>15.0.2</maven.compiler.source>
          <maven.compiler.target>15.0.2</maven.compiler.target>
          <maven.compiler.compilerVersion>15.0.2</maven.compiler.compilerVersion>
          <encoding>UTF-8</encoding>
      </properties>   
</profile>

配置建立本地的maven路径

大约54行左右配置本地的maven仓库

image-20240824101657124

<localRepository>C:\Users\A2\Desktop\apache-maven-3.9.1-bin\apache-maven-3.9.1\repository</localRepository>

测试Maven

执行mvn --version,出现mvn的版本,代表maven安装成功

mvn --version

image-20240824101934260

配置完成,运行mvn help:system测试,配置成功则本地仓库(C:\Users\A2\Desktop\apache-maven-3.9.1-bin\apache-maven-3.9.1\repository)中会出现一些文件。
首次执行 mvn help:system 命令,Maven相关工具自动帮我们到Maven中央仓库下载缺省的或者Maven中央仓库更新的各种配置文件到Maven本地仓库中。

mvn help:system 是 Maven 构建工具中的一个特定命令,它的主要作用是提供关于 Maven 运行环境的详细信息

mvn help:system

其它版本也是如此创建

参考链接:全站最全Maven下载安装配置教学(2024更新…全版本)建议收藏…赠送IDEA配置Maven教程-CSDN博客

idea创建maven项目(使用3.8.8)

1. maven配置

1.1 maven与idea关联

关闭项目,选择ALL settings.

image-20250217112732265

配置Maven的home地址

配置本地settings文件地址

配置本地仓库地址

image-20250217103422911

2.新建项目

新建一个maven项目。

Groupld:机构或者团体的英文,采用"逆向域名"形式书写。

Artifactld:项目名称,说明其用途,例如:cms、oa…

image-20250217104753761

pom.xml:项目(Project)对象(Object)模型(Model)文件

image-20250217110335003

3. java项目创建war项目

idea安装插件JBLJavaToWeb

image-20250217114203390

点击JBLJavaToWeb

image-20250217114307072

查看目录转换成功。

image-20250217114356083

4. pom.xml初始说明

Groupld:机构或者团体的英文,采用"逆向域名"形式书写。

Artifactld:项目名称,说明其用途,产品线名-模块名。语义不重复不遗漏,例如:cms、oa…

version:版本号格式推荐:主版本号.次版本号.修订号

Packaging定义规则:

指示将项目打包为什么类型的文件,idea根据packaging值,识别maven项目类型。

packaging 属性为jar(默认值),代表普通的Java工程,打包以后是.jar结尾的文件

packaging属性为 war,代表Java的web工程,打包以后.war结尾的文件。

packaging属性为 pom,代表不会打包,用来做继承的父工程。

image-20250217114929673

5.maven项目结构

image-20250217120854198

6. tomcat部署项目

配置tomcat环境变量

CATALINA_HOME

C:\Users\A2\Desktop\apache-tomcat-8.5.99-windows-x64\apache-tomcat-8.5.99

image-20250217194524599

path添加

%CATALINA_HOME%\bin

image-20250217194624512

创建个index.html,并配置tomcat

image-20250217121701191

image-20250217182354987

image-20250217182455797

6.1解决tomcat乱码问题

将logging.properties中java.util.logging.ConsoleHandler.encoding的UTF-8改为GBK

image-20250217202841552

7. 启动项目

启动项目,编译后的文件放在target文件中

image-20250217203212023

在项目目录下,cmd执行命令:

​ mvn clean 清理:清理编译后的文件(target文件)。

​ mvn compile 编译项目,生成target文件

​ mvn pachage:打包成war包

也可以通过可视化执行该命令

image-20250217211101334

7.1 打包成war包

如果使用jdk17,打包war包报错,maven自带打包插件和jdk版本不匹配。

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.1</version>
        </plugin>
    </plugins>
</build>

部署时,将war包放在tomcat文件下的webapps文件夹里,启动tomcat即可启动项目

指定打包名称

<build>
    <finalName>定义打包名称</finalName>
</build>

8. maven依赖管理

  <dependencies>
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.33</version>
      <scope>compile</scope>
    </dependency>
  </dependencies>

image-20250217215448418

maven jar包搜索:

Maven Central

Maven Repository: Search/Browse/Explore

自定义版本,方便日后版本修改 <log4jversion>1.2.17</log4jversion> ${log4jversion}取值

  <properties> 
    <maven.compiler.source>8</maven.compiler.source>  
    <maven.compiler.target>8</maven.compiler.target>  
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <!-- <自定义标签名>版本值</自定义标签名> -->
    <log4jversion>1.2.17</log4jversion>
  </properties>
  <dependencies>
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>${log4jversion}</version>
    </dependency>
  </dependencies>

9. 下载一半中断网络导致包未下载成功

在本地仓库搜索 lastxxx将其进行删除即可。

image-20250217221203042

10.指定打包文件

如果在java文件夹中添加java类,会自动打包编译到classes文件夹下!

但是在java文件夹中添加xml文件,默认不会被打包!

默认情况下,按照maven工程结构放置的文件会默认被编译和打包!

除此之外、我们可以使用resources标签,指定要打包资源的文件夹要把哪些静态资源打包到 classes根目录下!

image-20250217222813639

11. maven打包成jar包

Maven通过maven-shade-plugin插件输出Jar包,其中一个是原始代码,一个为带有其他插件的jar包合并到一个jar包中

<build>
        <plugins>
            <!-- 配置 maven-shade-plugin -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>3.3.0</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                        <configuration>
                            <transformers>
                                <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                    <mainClass>org.example.PinyinTestor</mainClass>
                                </transformer>
                            </transformers>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

使用mvn clean package去运行。

或者使用插件assembly-plugin

<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>2.5.5</version>
                <configuration>
                    <archive>
                        <manifest>
                            <mainClass>org.example.PinyinTestor</mainClass>
                        </manifest>
                    </archive>
                    <descriptorRefs>
                        <!-- all in one 在打包时将所有引用的jar包合并到输出的jar中 -->
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                </configuration>
            </plugin>
        </plugins>
    </build>

点击红框内容
image-20250218223938051

12.pom.xml中配置镜像仓库

如果不想全局配置,也可以在pom.xml中配置

配置阿里云插件仓库


    <pluginRepositories>
        <!-- 阿里云插件仓库 -->
        <pluginRepository>
            <id>aliyun</id>
            <name>aliyun</name>
            <url>https://maven.aliyun.com/repository/public</url>
        </pluginRepository>
    </pluginRepositories>

配置阿里云jar包镜像仓库

    <repositories>
        <!-- 阿里云插件仓库 -->
        <repository>
            <id>aliyun</id>
            <name>aliyun</name>
            <url>https://maven.aliyun.com/repository/public</url>
        </repository>
    </repositories>

http://www.kler.cn/a/551724.html

相关文章:

  • 使用brew install python,跟 Mac自带的python版本会发生冲突吗?
  • 【数据结构】(10) 排序算法
  • 《Python实战进阶》专栏 No2: Flask 中间件与请求钩子的应用
  • Gurobi重新激活
  • redis群集-简单部署
  • 【JavaScript】正则表达式综合案例
  • Jenkins 调用 Shell 脚本,在Shell脚本中调用 Unity 类方法,传递参数给Unity
  • 如何在Odoo 18中创建记录规则Rule
  • 芯麦 GC1808:高性能、低成本的立体声音频模数转换器
  • Firecrawl的docker部署巨坑(逐一击破)
  • Linux-GlusterFS进阶配置
  • 网络安全等级保护测评(等保测评):全面指南与准备要点
  • 【Javascript Day18】
  • RK3568平台开发系列讲解(PWM篇)SG90 舵机驱动实验
  • 什么是电力交易员
  • 《Java 排序算法新视界:八大排序算法全解析》
  • 网工_IP地址
  • 深入浅出:CUDA是什么,如何利用它进行高效并行计算
  • 机器视觉--索贝尔滤波
  • Java练习(22)