我们应该怎样使用maven来管理java项目(如何用maven管理项目)

一、maven概述

要用java实现一个后台系统,可能需要涉及很多模块。

web应用服务器、文件服务器、db 等等。 我们要开发这些模块,需要先把他们各自需要依赖的jar包或者项目下载打包好,然后配置到项目的classpath中。

这些应用在运行单元测试pr编译or部署的时候,需要依赖本地的一些配置,比如jdkweb容器等,这样我们将项目分享出去的时候,别人要使用就有一定的配置门槛。

maven可以帮我们完成上述所有的工作,不用我们再手工去完成。、

maven将项目看做一个对象。

maven建立了一个仓库体系,来管理这些项目对象。

maven的仓库分为本地仓库和远程仓库(maven提供的中央仓库)。

我们可以通过maven的命令把自己的项目a放到本地仓库中,如果其他项目b需要依赖项目a,则可以直接在本地仓库中找到。

如果我们的项目依赖一些别人的项目,比如jdbc、mybatis,maven会先根据我们的项目属性在本地仓库中去找,若找不到就去中央仓库中去找。

如下图,箭头表示依赖关系。

我们应该怎样使用maven来管理java项目(如何用maven管理项目)

maven项目对象的部分基础属性:

① 项目坐标

项目坐标用来定位一个项目在仓库中的位置。当项目b依赖项目a或者jdbc时,maven会根据项目坐标属性去从仓库体系中寻找项目,并自动配置到项目依赖中。

② 打包方式。

这个属性决定我们执行maven的package方法后,项目会被打包成什么文件。

③ 项目依赖列表。

这个属性的值是一个数组,里边有一些其他项目的坐标。

④ 构建插件列表。

这个属性是一个数组,定义项目需要的一些插件,比如源码打包工具、web容器

还有一些属性在后边介绍。

maven项目对象的部分方法:

①mvn compile 编译项目

②mvn package 打包项目

③mvn clean 清除之前编译和打包产生的文件

④mvn install 将项目安装到本地仓库

⑤mvn test 运行测试代码

二、maven的安装

① 访问http://maven.apache.org/download.html 下载最新版本

② 解压到maven工作目录,比如d盘根目录

③ 配置maven环境变量

MAVEN_HOME : D:apache-maven-3.0.2
MAVEN : %MAVEN_HOME%bin
在path 前面 加上 %MAVEN%;

④ 打开cmd敲 mvn -version, 回车。

如看到下面信息表示安装成功:

我们应该怎样使用maven来管理java项目(如何用maven管理项目)

三、maven项目结构和项目创建方法

 项目结构:

我们应该怎样使用maven来管理java项目(如何用maven管理项目)

一级目录src为源码目录

二级目录main/java为项目主要代码目录

三级目录就是项目的source目录了

二级目录test/java为项目测试代码目录

三级目录 测试代码source目录

一级目录 编译、打包产生的文件的存放目录

pom.xml文件——项目对象描述文件,前边讲的项目对象的属性和方法配置就在这个文件里边

maven项目创建方法

① 打开cmd,切换到工作目录,运行

我们应该怎样使用maven来管理java项目(如何用maven管理项目)

首次运行这个命令maven会下载一大堆依赖的文件,这个不用管。

② 填写quickstart参数

我们应该怎样使用maven来管理java项目(如何用maven管理项目)

按回车,这样就成功的创建了一个maven项目。

我们填写的几个参数:

groupId是帮助项目对象在仓库中定位的

artifactId决定了生成的项目文件夹目录的名称

version是项目版本号

package 是项目source文件下最顶层的包名

③ 项目创建成功

我们应该怎样使用maven来管理java项目(如何用maven管理项目)

④ 也可以把命令一次敲完

我们应该怎样使用maven来管理java项目(如何用maven管理项目)

四、maven配置文件settings.xml

在使用maven的时候和仓库相关的一些配置用到了这个文件,所以在这里想讲一讲这个文件。位置:mavenconfsettings.xml。

① 修改本地仓库位置

maven默认本地仓库的位置是 用户.m2 目录 。这个目录在C盘下,和我们的工作区是分开的,不方便管理。另外,如果系统出现啥问题,C盘格式化了,我们的文件就找不回来了。

<localRepository>D:/java/maven_repo</localRepository>

修改这个属性,即可修改本地仓库的位置。

修改了settings.xml后最好在本地仓库里边复制一份,避免maven重装后配置文件丢失

② 配置maven中央仓库位置

由于祖国很墙,有时候访问中央仓库网速会特别慢或者干脆不可用,所有我们要配置一个maven中央仓库在国内的镜像服务器。

我使用的是oschina提供的镜像服务器,项目比较全速度也挺快。

<mirrors> <mirror> <id>nexus-osc</id> <mirrorOf>central</mirrorOf> <name>Nexus osc</name> <url>http://maven.oschina.net/content/groups/public/</url> </mirror></mirrors>

五、maven项目对象配置文件 pom.xml 解析

POM.xml是maven项目比较核心的一个文件,所以这部分的内容可以算是重头了。我还是按照描述一个对象的方式来描述这个文件吧。

① 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"> <!-- 指定了当前POM的版本 --> <modelVersion>4.0.0</modelVersion></project>

这个是pom.xml的壳子,我姑且把它叫做pom对象吧

② 坐标属性

如果我们认为maven仓库是一个空间,那么坐标属性就是项目在这个空间内的 x、y、z 坐标(刚好决定坐标的标签有三个,这么比喻很合适啊:) )。

<groupId>com.sogou.hi</groupId><!-- 反写的公司网址 项目名 --><artifactId>hi</artifactId><!-- 一般是项目名 模块名 如 mcloud.db --><version>0.0.1-SNAPSHOT</version><!-- 大版本号.分支版本号.小版本号 snapshot 快照 alpha内测 beta公测 release稳定版 GA正式发布版本 -->

任何时候要找到一个项目,只需要有这三个属性就可以了

③ 项目依赖列表属性

概述中说过,这个属性是一个数组,那么在xml文件中的表现形式就是下面这样的:

<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> </dependency> <dependency> <groupId>com.sogou.ml</groupId> <artifactId>ml-b</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> </dependencies>

这个依赖列表属性表明,该项目依赖了两个项目 junit和ml-b 。项目依赖还有一些其他的属性,真正用的时候是下面这样的:

<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope><!-- scope 属性决定该依赖项目在什么阶段,test表示该项目只在测试代码中依赖 具体见 http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Dependency_Scope --> </dependency> <dependency> <groupId>com.sogou.ml</groupId> <artifactId>ml-b</artifactId> <version>0.0.1-SNAPSHOT</version> <exclusions> <!-- 排除传递关系的依赖。 例如 ml-c 依赖 ml-b,ml-b依赖 ml-a ,那么我们会发现maven让ml-c同时依赖了a和b,通过这个属性可以排除c对a的依赖 --> <exclusion> <groupId>com.sogou.ml</groupId> <artifactId>ml-a</artifactId> </exclusion> </exclusions> </dependency> </dependencies>

④ 构建过程中使用插件的属性

这个配置会让我们的项目在运行 mvn package打包的同时将源码也打包,原本target目录下只会出现 xxx.jar ,现在还会出现一个 xxx-source.jar

<!-- 为项目构建行为提供相应支持 --> <build> <!-- 插件列表 --> <plugins> <!-- 打包源码插件 --> <plugin> <!-- 插件项目坐标 --> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <version>2.4</version> <!-- 在什么阶段执行 --> <executions> <execution> <phase>package</phase> <goals> <goal>jar-no-fork</goal> </goals> </execution> </executions> </plugin> </plugins> </build>

下面这个配置可以让项目打包完成后开始运行web容器,若是web项目就可以在浏览器中访问站点了。

<plugins> <plugin> <!-- <groupId>org.mortbay.jetty</groupId> <artifactId>jetty-maven-plugin</artifactId> <version>8.1.15.v20140411</version>--> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> <executions> <!-- 打包成功后即开始运行web容器 --> <execution> <phase>package</phase> <goals> <goal> run </goal> </goals> </execution> </executions> </plugin> </plugins>

⑤ 项目聚合属性

假如我们有好几个项目,需要一起编译打包,挨个打包很麻烦,这个时候我们就可以用聚合属性。

<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.sogou.ml</groupId> <artifactId>ml-all</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>pom</packaging> <name>ml-all</name> <url>http://maven.apache.org</url> <modules> <module> ../ml-a </module> <module> ../ml-b </module> <module> ../ml-c </module> </modules> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties></project>

新建一个pom文件,将packaging打包方式修改为pom。

添加modules属性,这个属性也是一个数组,里边有一些项目文件夹的路径,编译打包这个pom项目的时候,会将modules里边的项目都编译打包。

⑥ 父子项目属性

新建一个新的maven项目,pom修改如下

<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.sogou.ml</groupId> <artifactId>ml-parent</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>pom</packaging> <name>ml-parent</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <junit.version>3.8.1</junit.version> </properties><dependencyManagement> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>${junit.version}</version> <scope>test</scope> </dependency> </dependencies></dependencyManagement></project>

打包方式同样的修改为pom。添加<dependencyManagement>节点,这个节点下是项目依赖属性。

在此节点下的依赖项目并不会在本项目中生效,但是可以在子项目的依赖中指定依赖,子项目配置如下:

<parent> <groupId>com.sogou.ml</groupId> <artifactId>ml-parent</artifactId> <version>0.0.1-SNAPSHOT</version> </parent> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> </dependency> </dependencies>

这样就可以让子项目依赖在父项目中配置的项目了

六、为eclipse安装maven插件

若我们使用的eclipse中米有maven插件,可以自己下载安装一个。

http://download.csdn.net/detail/cnclenovo/5181671

下载后解压到 eclipsedropins 目录下即可。

打开Windows-preference 看到maven说明安装成功。

我们应该怎样使用maven来管理java项目(如何用maven管理项目)

现在我们创建maven项目、编译打包等操作,都可以用eclipse插件来完成了。

我们应该怎样使用maven来管理java项目(如何用maven管理项目)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

(0)
上一篇 2023年8月3日 上午8:28
下一篇 2023年8月3日 上午8:38

相关推荐

  • 有关英语的科研项目

    有关英语的科研项目 英语作为全球通用语言,已经成为人们日常生活中不可或缺的一部分。然而,随着英语使用的日益广泛,如何提高英语听、说、读、写能力成为了人们越来越关注的问题。近年来,有…

    科研百科 2025年3月13日
    1
  • ISO9001质量管理体系剖析(Iso9001质量管理体系)

    产品质量是企业生存的关键。影响产品质量的因素很多,单纯依靠检验只不过是从生产的产品中挑出合格的产品。这就不可能以最佳成本持续稳定地生产合格品。 一个组织所建立和实施的质量体系,应能…

    科研百科 2022年11月7日
    339
  • APP加油,每升真的能便宜1、2块吗?

    用APP加油,每升能省1到2块钱,听起来诱惑十足,真的那么优惠吗?今天我们得验证一下,到底怎么回事。 各大APP的加油优惠,到底有多少 有加油优惠的APP,其实挺多的,我们选了3个…

    科研百科 2023年8月25日
    129
  • 财政厅:400万以下项目不用公开招标!(财政厅-400万以下项目不用公开招标吗)

    原标题:财政厅:400万以下项目不用公开招标!400万元以上工程项目留给中小企业40%以上! 来源:江苏省财政厅、江苏省发改委、建筑管理 日前,江苏省财政厅印发《江苏省2024年政…

    科研百科 2024年6月19日
    45
  • 大学生放假申请留校,填写留校理由时,几乎没有学生敢说实话(大学寒假申请留校理由)

    每个高等院校都有自己特殊的校规准则,一个学校不同的专业也是有不同的上课方式,不同的活动时间,自然每个学校的放假时间也是不一样的,但至少高校与高校就放假时间上是相差并不多的。 一个大…

    科研百科 2024年6月22日
    66
  • “新型高效肥料增效剂的研制及其应用效果研究”通过部级鉴定

      日前,由农业资源与农业区划所逄焕成博士与深圳市幸福和庄农业科技发展有限公司共同承担“新型高效肥料增效剂的研制及其应用效果研究”项目,通过了农业部组织的专家鉴定。  该项研究针对…

    科研百科 2022年5月20日
    280
  • 项目管理系统搭建

    项目管理系统搭建 项目管理系统是一种用于管理和组织项目的工具,可以帮助团队成员更好地协作,提高项目效率和质量。随着项目管理在企业中的重要性不断凸显,越来越多的企业开始注重项目管理系…

    科研百科 2024年7月15日
    61
  • 科研项目基本建设支出

    科研项目基本建设支出 科研项目基本建设支出是科研项目中不可或缺的一部分。基本建设支出包括设备的采购、基础设施建设、实验室建设等方面。这些支出对于科研项目的顺利开展至关重要。 设备的…

    科研百科 2天前
    0
  • 国家级科研项目建设

    国家级科研项目建设 近年来,随着国家科技的不断发展,许多国家级科研项目正在建设中。这些项目旨在推动国家科技的进步,提升国家的综合实力。 在国家级科研项目建设中,科学家们致力于提出新…

    科研百科 2025年4月3日
    0
  • 内账管理软件

    内账管理软件:企业财务管理的利器 内账管理软件是一种专门用于管理企业内部财务信息的软件,能够帮助企业更好地进行财务管理。随着社会经济的发展,企业财务管理也在不断地升级,内账管理软件…

    科研百科 2024年11月8日
    0