Maven学习笔记

Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。

Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。由于 Maven 的缺省构建规则有较高的可重用性,所以常常用两三行 Maven 构建脚本就可以构建简单的项目。由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目发文时使用 Maven,而且公司项目采用 Maven 的比例在持续增长。

下载Maven           http://maven.apache.org/download.cgi

 

配置Maven

  1. 将下载好的Maven解压缩后放在D盘中
  2. 在高级系统设置中配置环境变量,修改path环境变量

;C:\service\apache-maven-3.6.2\bin;将位置信息指向文件夹bin中即可,在path中加入这段话

  1. 测试是否安装成功

mvc  -version会得到相关的版本信息

手工创建一个Maven工程,大概了解一下Maven组成和编译

结构图

在HelloWorld文件中/src/main/java/com/king下创建HelloWorld.java文件

package com.king;

public class HelloWorld{     

      public static void main(String[] args){

           System.out.println("Maven构建成功");

      }

}

将pom.xml配置文件拷贝到工程的根目录下/HelloWorld

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>  <!--POM版本4.0.0-->

    <groupId>com.kingsoft.HelloWorld</groupId>  <!--一般是某公司或组织的某一个项目-->

    <artifactId>HelloWorld</artifactId>  <!--某个项目的具体模块-->

    <version>0.0.1-SNAPSHOT</version>  <!--项目版本-->

 

  <dependencies>

     

  </dependencies>

</project>

运行maven项目

需要使用dos模式,进入到工程根目录下执行maven操作

D:\HelloWorld> mvn compile 编译

 

进行编译,下载的maven仓库下载到C:\Users\Administrator\.m2(默认位置)

说明已经编译成功,编译完成的.class文件会存放在HelloWorld文件夹的target文件夹中(自动生成)

注意:mvn compile只编译src/main文件夹下的.java文件

mvn clean (清空):会把target文件夹以及文件夹下生成的.class文件一起删除

mvn test (测试):会把src下的main,test下的所有.java文件编译,首先创建文件夹target,并将编译号的二进制.class文件放入其中

mvn package(打包):本人测试得出结论,如果使用mvn clean将target(编译后的.class文件夹)删除,在执行打包操作时maven会先执行编译(src下的main,test),然后在开始打包。

生成的文件名称一般为:HelloWorld-0.0.1-SNAPSHOT.jar

mvn install(把项目安装到本地仓库):本人测试得出结论,如果使用mvn clean将target(编译后的.class文件夹)删除,在执行安装操作时maven会先执行编译(src下的main,test),然后在开始打包生成HelloWorld-0.0.1-SNAPSHOT.jar文件,同时在本地仓库中创建编译好的工程

 

Maven本地仓库迁出默认的C盘

  1. 在D盘创建一个myMaven的文件夹
  2. 找到maven安装文件夹中的conf文件夹,修改setting.xml文件

  <!--自定义的Maven仓库位置 2019.10.13-->

  <localRepository>D:\myMaven\repository</localRepository>

 

将上面的的配置信息拷贝到被注释的

<!--

<localRepository>/path/to/local/repo</localRepository>

-->

信息下边,保存即可

这样在编译maven项目时,会自动将所需的jar文件下载到这个文件夹下

  1. 再次编译项目 mvn compile就可以将所需的jar文件下载到指定的文件夹下
  2. 将C:\Users\Administrator\.m2的repository删除即可

 

 

 

使用Eclipse创建Maven项目

  1. 拷贝一份setting.xml文件,其中指定的仓库位置为D:\myMaven\repository
  2. 配置maven,在Eclipse中找到WindowàPreferencesàMavenàUser Settings

 

本人习惯将全局和用户全部指向setting.xml文件,这时Local Repository会自动找到配置信息中的仓库位置

保存即可完成配置。

 

  1. 在空白处单击右键,New  --> Other  -->

 

 

  1. 创建Maven工程

 

 

单击Next

 

 

选择Maven的技术骨架(quickstart)这种生成jar文件,单击Next

 

填写pom.xml的配置信息如上图所示

配置下载jar包的同时下载源码和文档

修改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.kingsoft.afarm</groupId>

    <artifactId>helloworld</artifactId>

    <version>0.0.1-SNAPSHOT</version>

    <packaging>jar</packaging> //打包后生成jar文件

 

    <properties>

        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

    </properties>

 

    <dependencies>

        <dependency>

            <groupId>junit</groupId>

            <artifactId>junit</artifactId>

            <version>4.12</version>

            <scope>test</scope>

        </dependency>

    </dependencies>

</project>

测试一下生成的maven工程

 

在main和test下创建两个java文件

HelloWorld.java

package com.kingsoft.afarm.helloworld;

 

public class HelloWorld {

    public String sayHello() {

        return "hello world";

    }

   

    public static void main(String[] args) {

        System.out.println(new HelloWorld().sayHello());

    }

}

 

HelloWorldTest.java

package com.kingsoft.afarm.helloworld;

import static org.junit.Assert.assertEquals;

import org.junit.Test;

 

public class HelloWorldTest {

 

    @Test

    public void testSayHello() {

        HelloWorld helloWorld = new HelloWorld();

        String result = helloWorld.sayHello();

        assertEquals("hello world", result);

    }

}

打包前可以进行编译和测试

在pom.xml文件上单击右键 -->Run As其中包含了clean/   install/   test/   build

前面3个功能和敲命令时是一样的,不同的是build

 

输入package后单击Run即可完成编译和打包过程,并在target文件夹下生成jar包

Maven的依赖特性

 

依赖的传递性:User-service依赖Spring-core,Spring-core又依赖Commons-logging,这时User-service与Commons-logging就发生了依赖的传递。

使用时的说明:

创建2个工程,分别由两个人做并行开发,人员A开发user-dao,人员B开发user-service

当user-dao开发完成后只需打包,而user-service只需引入调用即可

user-dao项目中单击pom.xml右键,Run AsàMaven install后,即可在Maven仓库中生成

user-dao-0.0.1-SNAPSHOT.jar文件以供其他工程引用。

 

例如user-service要引用user-dao工程,则需要在pom.xml文件中配置

user-dao的pom.xml

<groupId>com.kingsoft.user</groupId>

<artifactId>user-dao</artifactId>

<version>0.0.1-SNAPSHOT</version>

<packaging>jar</packaging>

user-service的pom.xml

<!-- 引入自定义的jar -->

<dependency>

    <groupId>com.kingsoft.user</groupId>

    <artifactId>user-dao</artifactId>

    <version>0.0.1-SNAPSHOT</version>

</dependency>

 

Maven的聚合

多个模块由一个模块进行统一的管理

项目user-dao和user-service统一交给user-web管理

配置信息如下

在user-web的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.kingsoft.user</groupId>

    <artifactId>user-web</artifactId>

    <version>0.0.1-SNAPSHOT</version>

    <packaging>pom</packaging>

 

    <modules>

        <module>../user-dao</module> //同级目录使用../退回到上一级

        <module>../user-service</module>

    </modules>

</project>

只需要操作user-web即可完成对user-servcie和user-dao的操作,例如clean    install

 

Maven的继承

用于统一管理版本

如果很多工程都引入自己的jar包和版本号很容易造成版本的冲突,如果使用父类统一管理版本号,就不会发生冲突。

创建一个user-parent父类的maven的pom工程(不需要架构)

修改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.kingsoft.user</groupId>

    <artifactId>user-parent</artifactId>

    <version>0.0.1-SNAPSHOT</version>

    <packaging>pom</packaging>

      //资源信息,用于统一管理版本

    <properties>

        <spring.version>4.1.7.RELEASE</spring.version>

        <junit.version>4.12</junit.version>

        <mybatis.version>3.3.0</mybatis.version>

        <mysql.version>5.1.40</mysql.version>

        <log4j.version>1.2.17</log4j.version>

        <mybatis-spring.version>1.2.3</mybatis-spring.version>

    </properties>

 

    <dependencyManagement>

        <dependencies>

            <dependency>

                <groupId>junit</groupId>

                <artifactId>junit</artifactId>

                <version>${junit.version}</version> 调用资源信息中的名称,加入${}

                <scope>test</scope>

            </dependency>

 

            <dependency>

                <groupId>org.mybatis</groupId>

                <artifactId>mybatis</artifactId>

                <version>${mybatis.version}</version>

            </dependency>

 

            <dependency>

                <groupId>mysql</groupId>

                <artifactId>mysql-connector-java</artifactId>

                <version>${mysql.version}</version>

            </dependency>

 

            <dependency>

                <groupId>log4j</groupId>

                <artifactId>log4j</artifactId>

                <version>${log4j.version}</version>

            </dependency>

 

            <!-- spring -->

            <dependency>

                <groupId>org.springframework</groupId>

                <artifactId>spring-core</artifactId>

                <version>${spring.version}</version>

            </dependency>

 

            <dependency>

                <groupId>org.springframework</groupId>

                <artifactId>spring-beans</artifactId>

                <version>${spring.version}</version>

            </dependency>

 

            <dependency>

                <groupId>org.springframework</groupId>

                <artifactId>spring-tx</artifactId>

                <version>${spring.version}</version>

            </dependency>

 

            <dependency>

                <groupId>org.springframework</groupId>

                <artifactId>spring-context</artifactId>

                <version>${spring.version}</version>

            </dependency>

 

            <dependency>

                <groupId>org.springframework</groupId>

                <artifactId>spring-context-support</artifactId>

                <version>${spring.version}</version>

            </dependency>

 

            <dependency>

                <groupId>org.springframework</groupId>

                <artifactId>spring-context-support</artifactId>

                <version>${spring.version}</version>

            </dependency>

 

            <dependency>

                <groupId>org.springframework</groupId>

                <artifactId>spring-web</artifactId>

                <version>${spring.version}</version>

            </dependency>

 

            <dependency>

                <groupId>org.springframework</groupId>

                <artifactId>spring-webmvc</artifactId>

                <version>${spring.version}</version>

            </dependency>

 

            <dependency>

                <groupId>org.springframework</groupId>

                <artifactId>spring-aop</artifactId>

                <version>${spring.version}</version>

            </dependency>

 

            <dependency>

                <groupId>org.springframework</groupId>

                <artifactId>spring-aspects</artifactId>

                <version>${spring.version}</version>

            </dependency>

 

            <dependency>

                <groupId>org.springframework</groupId>

                <artifactId>spring-jdbc</artifactId>

                <version>${spring.version}</version>

            </dependency>

 

            <dependency>

                <groupId>org.mybatis</groupId>

                <artifactId>mybatis-spring</artifactId>

                <version>${mybatis-spring.version}</version>

            </dependency>

        </dependencies>

    </dependencyManagement>

</project>

修改子类的user-dao项目的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>

 

    <!-- 继承父类节点 -->

    <parent>

        <groupId>com.kingsoft.user</groupId>

        <artifactId>user-parent</artifactId>

        <version>0.0.1-SNAPSHOT</version>

        <relativePath>../user-parent/pom.xml</relativePath>

    </parent>

 

    <!-- 子类中的声明只需要保留一下两条  -->

    <artifactId>user-dao</artifactId>

    <packaging>jar</packaging>

 

    <properties>

        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

    </properties>

 

    <dependencies>

        <dependency> //子类中不需要指定版本号,都由父类统一管理

            <groupId>junit</groupId>

            <artifactId>junit</artifactId>

            <scope>test</scope>

        </dependency>

 

        <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->

        <dependency>

            <groupId>org.mybatis</groupId>

            <artifactId>mybatis</artifactId>

        </dependency>

 

        <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->

        <dependency>

            <groupId>mysql</groupId>

            <artifactId>mysql-connector-java</artifactId>

        </dependency>

 

        <!-- https://mvnrepository.com/artifact/log4j/log4j -->

        <dependency>

            <groupId>log4j</groupId>

            <artifactId>log4j</artifactId>

        </dependency>

    </dependencies>

</project>

 

 

Maven依赖的范围

classpath分为三种:编译classpath, 测试classpath,运行classpath

 

scope选项如下:

Compile:编译依赖范围,如果不加scope范围,默认就是Compile,这个范围在编译,测试,运行都有效

Test:测试范围有效,例如junit

Provided:已提供依赖范围。编译,测试有效,运行时无效,例如servlet-api,如果在打包中最好将serlvet-api的引用设置成provided,因为tomcat本身就有serlvet-api的jar包,如果导出的工程中有servlet-api可能会与tomcat的jar包发生冲突。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
校园失物招领系统管理系统按照操作主体分为管理员和用户。管理员的功能包括字典管理、论坛管理、公告信息管理、失物招领管理、失物认领管理、寻物启示管理、寻物认领管理、用户管理、管理员管理。用户的功能等。该系统采用了Mysql数据库,Java语言,Spring Boot框架等技术进行编程实现。 校园失物招领系统管理系统可以提高校园失物招领系统信息管理问题的解决效率,优化校园失物招领系统信息处理流程,保证校园失物招领系统信息数据的安全,它是一个非常可靠,非常安全的应用程序。 ,管理员权限操作的功能包括管理公告,管理校园失物招领系统信息,包括失物招领管理,培训管理,寻物启事管理,薪资管理等,可以管理公告。 失物招领管理界面,管理员在失物招领管理界面中可以对界面中显示,可以对失物招领信息的失物招领状态进行查看,可以添加新的失物招领信息等。寻物启事管理界面,管理员在寻物启事管理界面中查看寻物启事种类信息,寻物启事描述信息,新增寻物启事信息等。公告管理界面,管理员在公告管理界面中新增公告,可以删除公告。公告类型管理界面,管理员在公告类型管理界面查看公告的工作状态,可以对公告的数据进行导出,可以添加新公告的信息,可以编辑公告信息,删除公告信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值