Maven 简介

一.Ant

1.Ant 和 Maven 都是项目构建工具
2.在项目的运行编辑打包等过程都需要依赖于 ant 构建工具

二. 分布式

1. 传统项目部署:
  1)新建一个项目,通过不同的包区分不同的模块.
  2)把这一个项目发布服务器的 tomcat 中
2. 分布式项目部署.(适用于高负载情况下)
  1)把一个完整的项目拆分成多个项目,把拆分后的项目分别部署到对应的服务器(tomcat)中的过程就叫做分布式项目部署.
    把传统项目包换成一个单独的项目

三.maven 简介

1.基于 Ant 的构建工具,Ant 有的功能 Maven 都有,额外添加了其他功能.
2.配置maven


3.运行原理图.
  1)本地仓库:计算机中一个文件夹,自己定义是哪个文件夹.
  2)中央仓库:网上地址  https://repo1.maven.org/maven2/
    下载速度慢--> 配置国内镜像
  3)保证 JDK 版本和开发环境一致,如果不配置 是JDK1.4 或 JDK1.5

  3.1 配置以上三个内容:
    注:eclipse默认走小范围,配置全局不配置局部默认走局部配置。

   3.2 settings.xml中需要配置的内容
    1)设置本地仓库
      示例语法

<localRepository>D:/maven/r2/myrepository</localRepository>

    2)修改 JDK 版本 (JDK1.7)(保证 JDK 版本和开发环境一致)

复制代码
<profile> 
    <id>jdk-1.7</id> 
    <activation> 
        <activeByDefault>true</activeByDefault> 
        <jdk>1.7</jdk> 
    </activation> 
    <properties> 
        <maven.compiler.source>1.7</maven.compiler.source> 
        <maven.compiler.target>1.7</maven.compiler.target> 
        <maven.compiler.compilerVersion>1.7</maven.compiler.compilerVersion> 
    </properties> 
</profile>
复制代码

    3)修改镜像地址(不使用 nexus 时配置)
      阿里云镜像

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

4.坐标
  每一个jar文件都有一个唯一坐标.通过坐标可以精确确定是哪个jar
  坐标组成
    GroupID: 公司名.公司网址倒写
    ArtifactID: 项目名
    Version: 版本
5.pom
  英文名称(Project Object Mode)
  项目对象模型
    把 project 当作对象看待.
    通过 maven 构建工具可以让对象(项目)和对象(项目)之间产生关系
6.网址(查看坐标): http://mvnrepository.com/

四.新建 Maven 项目

1. New-->Maven project
2. 勾选复选框,表示创建一个简单 Maven 项目(不应用任何模板)

 

3. 填写项目信息
  Packaging: 项目的类型,最终会被打包成什么类型.
    jar:java 项目
    war:web 项目
    pom:逻辑父项目
      只要一个项目有子项目必须是 pom 类型.

 

五. Maven 项目目录结构(jar 类型)

 

1. src/main/java  真实目录的快捷目录,写 java 代码
2. src/main/resources  存放配置文件的快捷目录
  虽然看见 resources 但是里面所有配置文件最终会被编辑放入到 classes 类路径.
3. src/test/java  写测试 java 代码
4. src/text/resources  测试的配置文件夹
5. pom.xml   maven 的配置文件
  当前项目所依赖的其他项目或 jar 或插件等

六. Maven 项目之间的关系

1. 依赖关系
  1)标签<dependency>把另一个项目的 jar 引入到当过前项目
  2)自动下载另一个项目所依赖的其他项目

<dependencies>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>${servlet-version}</version>
    </dependency>
</dependencies>     

2. 继承关系.
  1)父项目是 pom 类型
  2)子项目jar或war,如果子项目还是其他项目的父项目,子项目也是 pom 类型.
  3)有继承关系后,子项目中出现<parent>标签
    如果子项目的<groupId>和<version>与父项目相同,在子项目中可以不配置<groupId>和<version>
  4)父项目 pom.xml 中是看不到有哪些子项目.在逻辑上具有父子项目关系.

<parent> 
    <groupId>com.su</groupId> 
    <artifactId>parent</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
</parent>

3. 聚合关系.
  1)前提是继承关系.父项目会把子项目包含到父项目中.
  2)子项目的类型必须是 Maven Module 而不是 maven project
  3)新建聚合项目的子项目时,点击父项目右键新建 Maven Module
  4)具有聚合关系的父项目,在 pom.xml 中存在<modules>

<modules> 
    <module>child2</module>
</modules>

  5)具有聚合关系的子项目,在 pom.xml 中存在<parent>

<parent> 
    <groupId>com.su</groupId> 
    <artifactId>parent</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
</parent>

4. 聚合项目和继承项目区别
  1)在语意上聚合项目父项目和子项目关系性较强
  2)在语意上单纯继承项目中父项目和子项目关系性较弱
5. <dependencyManagement> 写在父项目
  1)作用:声明可能使用到的所有 jar包
  2)子项目中只需要有坐标的<groupid>和<artifactid>,<version>继承父项目
  3)在父项目中用<properties>把所有版本号进行统一管理
  4)父项目 pom.xml
    <properties>子标签名称自定义
    ${名字} 引用标签的值

复制代码
<properties> 
    <spring-version>4.1.6.RELEASE</spring-version> 
</properties>
<dependencyManagement> 
    <dependencies> 
        <dependency> 
            <groupId>org.springframework</groupId> 
            <artifactId>spring-webmvc</artifactId> 
            <version>${spring-version}</version> 
        </dependency> 
    </dependencies> 
</dependencyManagement>
复制代码

  5)子项目

<dependencies> 
    <dependency> 
        <groupId>org.springframework</groupId> 
        <artifactId>spring-webmvc</artifactId> 
    </dependency> 
</dependencies>

七. 创建 war 类型项目

1. 创建 mavenproject 时选择 packaging 为 war
2. 在 webapp 文件夹下新建 META-INF 和 WEB-INF/web.xml

3. 在 pom.xml 中添加 javaee 相关的三个 jar
  <scope>jar包的有效范围, provided 表示编译期生效,不会打包发布到 tomcat 中

复制代码
<dependencies> 
    <dependency> 
        <groupId>javax.servlet</groupId> 
        <artifactId>javax.servlet-api</artifactId> 
        <version>3.0.1</version> 
        <scope>provided</scope> 
    </dependency> 
    <dependency> 
        <groupId>javax.servlet.jsp</groupId> 
        <artifactId>jsp-api</artifactId> 
        <version>2.2</version> 
        <scope>provided</scope> 
    </dependency>
    <dependency> 
        <groupId>jstl</groupId> 
        <artifactId>jstl</artifactId> 
        <version>1.2</version> 
    </dependency> 
</dependencies>
复制代码

4. 配置 tomcat 插件

复制代码
<build> 
    <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>/</path> 
            </configuration>
        </plugin> 
    </plugins> 
</build>
复制代码

5. 启动项目:右键项目-->run as-->maven build-->Goals 中输入 cleantomcat7:run

八. 资源拷贝插件

1.maven 默认只把 src/main/resources 里面的非.java 文件进行编译到classes 中
2.如果希望 src/main/java 下的文件也被编辑到 classes 中,在 pom.xml中配置
  下面内容配置在<build>中

复制代码
<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>
复制代码

九. 热部署

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

<rolerolename="manager-gui"/>
<rolerolename="manager-script"/>
<user username="tomcat" password="tomcat" roles="manager-gui,manager-script"/>

2. 在 maven 项目的 pom.xml 中 tomcat 插件的<configuration>里配置

复制代码
<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>
            <url>http://192.168.139.128:8080/manager/text</url>
        </configuration> 
    </plugin> 
</plugins>
复制代码

3. 右键项目-->run as-->maven build(如果以前写过,则选择第二个)-->输入
  tomcat7:deploy   第一次发布
  tomcat7:redeploy   不是第一次发布

 

posted @   溯鸣  阅读(272)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示