Maven学习笔记

Maven

Maven是一种项目管理工具,基于POM(项目对象模型),帮助实现管理依赖,以及项目的构建、发布、部署、生成报告等。

1. 常用命令:

# 查看版本
mvn -version (-v)
# 编译项目
mvn compile
# 运行单元测试
mvn test
# 项目打包
mvn package
# 清理项目(删除target目录)
mvn clean
# 安装打包好的项目jar包到仓库
mvn install
# 构建项目目录
mvn archetype:generate [-DgroupId=组织名 -DartifactId=项目名 -Dversion=版本 -Dpackage=包]

2. Maven 生命周期:

  1. clean 清理
  2. default 默认,默认生命周期又包含7个步骤:
  • validate 验证
  • compile 编译
  • test 测试
  • package 打包
  • verify 核准,部署前验证
  • install 安装,安装到仓库
  • deploy 部署,部署服务器
  1. site 发布,发布网站,生成报告

3. Maven配置

Maven可以在settings.xml文件中进行配置 settings.xml文件一般存在于两个位置:

  1. 全局配置: ${MAVEN_HOME}/conf/settings.xml

  2. 用户配置: 用户目录/.m2/settings.xml

本地仓库:

<localRepository>本地仓库路径</localRepository>

远程仓库:

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

项目构建配置:

<profile>
	<id>jdk1.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>

4.依赖范围

:

  1. compile 编译阶段,默认,在编译测试运行时起作用
  2. test 测试,编译和测试时起作用
  3. provided 已提供, 运行环境已提供该依赖,如Tomcat提供Servlet依赖
  4. runtime 运行时,测试和运行起作用
  5. system 由系统提供
  6. import 用于导入

5. 排除依赖

除了依赖Maven自带的方案,我们还可以自己排除不需要的依赖

如:在spring-jdbc中排除spring-core

<dependency>
	<groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>5.1.12.RELEASE</version>
    <!-- 需要排除的依赖: -->
    <exclusions>
    	<exclusion>
        	<artifactId>spring-core</artifactId>
            <groupId>org.springframework</groupId>
        </exclusion>
    </exclusions>
</dependency>

6. 手动构建一个maven项目:

  1. 新建文件夹作为用来存放项目目录

  2. 在当前目录打开cmd

  3. 在命令行输入以下命令

    mvn archetype:generate -DgroupId=top.iuoly.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DinteractiveMode=false
    

    参数说明:

    • groupId:组织名,公司域名的反写+项目名
    • artifactId:项目名-模块名
    • archetypeArtifactId:指定的ArchetypeId。
      • maven-archetype-quickstart,创建一个简单的java应用
      • maven-archetype-webapp,创建一个web应用
    • interacticeMode:是否使用交互模式

    maven提供的41个骨架原型分别是:

    1: appfuse-basic-jsf (创建一个基于Hibernate,Spring和JSF的Web应用程序的原型)
    2: appfuse-basic-spring(创建一个基于Hibernate,Spring和Spring MVC的Web应用程序的原型)
    3: appfuse-basic-struts(创建一个基于Hibernate,Spring和Struts 2的Web应用程序的原型)
    4: appfuse-basic-tapestry(创建一个基于Hibernate,Spring 和 Tapestry 4的Web应用程序的原型)
    5: appfuse-core(创建一个基于Hibernate,Spring 和 XFire的jar应用程序的原型)
    6: appfuse-modular-jsf(创建一个基于Hibernate,Spring和JSF的模块化应用原型)
    7: appfuse-modular-spring(创建一个基于Hibernate, Spring 和 Spring MVC 的模块化应用原型)
    8: appfuse-modular-struts(创建一个基于Hibernate, Spring 和 Struts 2 的模块化应用原型)
    9: appfuse-modular-tapestry (创建一个基于 Hibernate, Spring 和 Tapestry 4 的模块化应用原型)
    10: maven-archetype-j2ee-simple(一个简单的J2EE的Java应用程序)
    11: maven-archetype-marmalade-mojo(一个Maven的 插件开发项目 using marmalade)
    12: maven-archetype-mojo(一个Maven的Java插件开发项目)
    13: maven-archetype-portlet(一个简单的portlet应用程序)
    14: maven-archetype-profiles()
    15:maven-archetype-quickstart()
    16: maven-archetype-site-simple(简单的网站生成项目)
    17: maven-archetype-site(更复杂的网站项目)
    18:maven-archetype-webapp(一个简单的Java Web应用程序)
    19: jini-service-archetype(Archetype for Jini service project creation)
    20: softeu-archetype-seam(JSF+Facelets+Seam Archetype)
    21: softeu-archetype-seam-simple(JSF+Facelets+Seam (无残留) 原型)
    22: softeu-archetype-jsf(JSF+Facelets 原型)
    23: jpa-maven-archetype(JPA 应用程序)
    24: spring-osgi-bundle-archetype(Spring-OSGi 原型)
    25: confluence-plugin-archetype(Atlassian 聚合插件原型)
    26: jira-plugin-archetype(Atlassian JIRA 插件原型)
    27: maven-archetype-har(Hibernate 存档)
    28: maven-archetype-sar(JBoss 服务存档)
    29: wicket-archetype-quickstart(一个简单的Apache Wicket的项目)
    30: scala-archetype-simple(一个简单的scala的项目)
    31: lift-archetype-blank(一个 blank/empty liftweb 项目)
    32: lift-archetype-basic(基本(liftweb)项目)
    33: cocoon-22-archetype-block-plain([http://cocoapacorg2/maven-plugins/])
    34: cocoon-22-archetype-block([http://cocoapacorg2/maven-plugins/])
    35:cocoon-22-archetype-webapp([http://cocoapacorg2/maven-plugins/])
    36: myfaces-archetype-helloworld(使用MyFaces的一个简单的原型)
    37: myfaces-archetype-helloworld-facelets(一个使用MyFaces和Facelets的简单原型)
    38: myfaces-archetype-trinidad(一个使用MyFaces和Trinidad的简单原型)
    39: myfaces-archetype-jsfcomponents(一种使用MyFaces创建定制JSF组件的简单的原型)
    40: gmaven-archetype-basic(Groovy的基本原型)
    41: gmaven-archetype-mojo(Groovy mojo 原型)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值