美文网首页
[java]31、Maven

[java]31、Maven

作者: 史记_d5da | 来源:发表于2022-04-01 23:10 被阅读0次

1、Tomcat部署项目的方式

1.1、将web项目整个文件夹,放在%TOMCAT_HOME%/webapps目录中,文件夹名作为ContextPath
项目打包路径
  • CRM_07:war exploded:项目打包内容
  • Output directory:项目的打包路径
  • Output Layout:为具体的打包内容

1、选择Build=> Build Artificats...=> CRM_07:war exploded=> Build

打包产物
2、生成打包产物:CRM_07-1.0-SNAPSHOT,将打包产物拷贝到 tomcatwebapp目录下,并修改目录名称为CRM_07(随便起个名字作为项目名称)。
tomcat的webapp目录
3、cdbin目录终端./startup.sh启动tomcat
4、在浏览器中输入localhost:8080/CRM_07即可成功启动项目
1.2、将web项目打包成war,放在%TOMCAT_HOME%/webapps目录中,war文件名作为ContextPath
CRM_07:war
1、war包的本质是zip包,CRM_07.war依赖CRM_07:war exploded
2、选择Build=> Build Artificats...=> CRM_07:war=> Build
war包
3、打包的产物:CRM_07-1.0-SNAPSHOT.war
4、将war包拷贝到webapp目录下面改名为CRM_07.war
5、启动tomcatCRM_07.war包会被自动解压成CRM_07文件夹
6、在浏览器中输入http://localhost:8080/CRM_07/customer/list可正常访问项目
1.3、 在%TOMCAT_HOME%/conf/server.xmlHost标签中添加以下内容(ContextPathpath属性值)

1、<Context docBase="项目路径" path="/crm7" />
2、启动tomcatCRM_07.war包会被自动解压成CRM_07文件夹,在浏览器中输入http://localhost:8080/CRM_07/customer/list可正常访问项目

server.xml
1.4、在%TOMCAT_HOME%/conf/Catalina/localhost中新建一个xml文件,xml文件名作为ContextPath

1、<Context docBase="项目路径" />
2、启动tomcatCRM_07.war包会被自动解压成CRM_07文件夹,在浏览器中输入http://localhost:8080/CRM_07/customer/list可正常访问项目

2、Maven

Apache Maven,主要用于自动化构建和管理Java项目,基于项目对象模型(POMProject Object Model)的概念

2.1、创建Maven项目

1、官网下载Maven,并配置好环境变量
2、修改maven配置,修改apache-maven-3.8.5/conf/setting.xml文件
修改maven仓库的下载地址

<!-- localRepository
   | The path to the local repository maven will use to store artifacts.
   | Default: ${user.home}/.m2/repository|   默认下载地址
  <localRepository>/path/to/local/repo</localRepository>
  -->
<localRepository>${user.home}/development/java/repository</localRepository>

修改下载镜像

<mirror>
    <id>aliyun</id>
    <name>aliyun</name>
    <mirrorOf>central</mirrorOf>
    <url>https://maven.aliyun.com/repository/public</url>
</mirror>
2.1.1、终端创建

1、终端输入命令:sudo mvn archetype:generate,会让我们选择项目类型默认值是7maven-archetype-quickstart,是一个普通的Java项目;如果是希望创建一个web项目,应该输入10maven-archetype-webapp;输入groupIdartifactIdversionpackage,最后输入y表示确认,项目创建完毕。
或者直接输入命令:

mvn archetype:generate -DgroupId=com.mj.maven -DartifactId=helloworld -Dversion=1.0-RELEASE -DarchetypeGroupId=org.apache.maven.archetypes -DarchetypeArtifactId=maven-archetype-quickstart

2、创建项目完成后,在终端输入命令:sudo mvn compile,终端报错,提示需要修改项目的JDK版本。
3、在pom.xml中添加属性(每个maven项目都要添加)

<properties>
    <maven.compiler.source>16</maven.compiler.source>
    <maven.compiler.target>16</maven.compiler.target>
    <maven.compiler.compilerVersion>16</maven.compiler.compilerVersion>
</properties>

4、mvn clean :清除target文件夹中编译后的文件
5、sudo mvn test:执行test
6、sudo mvn package:对maven进行打包

2.1.2、IntelliJ IDEA创建

1、New Project...选择Maven,选择maven-archetype-quickstart

Maven
2、Maven home path选择下载到本地的maven包、User setting file选择本地maven包里的settting.xml文件、groupId修改为自己项目的包名称、点击Finish创建完成
setting
3、在maven导航栏中执行命令行,需要修改IntelliJ IDEA的配置,选择Preference=>Build,Execution,Deployment修改maven配置
Preference
2.2、Maven项目的目录结构

Maven使用”约定优于配置“的思想(Convention over Configuration),创建项目时,Maven将创建默认项目架构,开发人员只需要相应地放置文件
1、Maven的项目架构

Maven项目架构
目录名称介绍
2、pom.xml
pom.xmlMaven项目的核心配置文件,根元素是project
pom.xml
groupIdartifactIdversion,组成一个Maven坐标,能够确定唯一的一个项目
3、仓库查询:sonatypeMVNrepository
2.3、构建生命周期

1、构建生命周期,描述了构建的过程。Maven内置了3个构建生命周期
clean(清理)、default(默认,重点关注)、site(站点)
2、构建生命周期是由phase(阶段)组成
phase可以跟plugin goal(插件目标)绑定
plugin goal代表一个特定的任务
一旦某个phase被执行,就会执行其绑定的所有goal
3、通过命令mvn插件:help可以查看插件包含的所有goal
比如mvn archetype:help

生命周期VS目标
4、default生命周期由以下表中的phase组成
default生命周期
使用命令mvn package就会按顺序执行validatecompiletestpackage阶段
5、常用命令
mvn archetype:generate:创建Maven项目
mvn clean:清楚target
mvn clean package:先执行clean,在执行package
2.4、生命周期分析

1、maven菜单栏,主要由Lifecycle(生命周期)和Plugins(插件)组成,Lifecycle(生命周期)里面的phase(阶段)是和Plugins(插件)的goal(目标)绑定。其中compiler插件是由compiler:compilecompiler:helpcompiler:testCompile三个目标绑定。

Maven菜单
2、双击compile阶段,会执行resources:resourcescompiler:compile两个目标。
相当于执行命令:mvn resources:resources compiler:compile
双击compile
2.5、dependency中scope的取值

compile:默认。编译依赖关系在所有类路径中均可使用。此外这些依赖项会传递到相关项目
provided:仅在编译和测试类路径上可用,并且不可传递。希望JDK容器在运行时提供它
runtime:依赖关系不是编译所必须的,而是运行所必须的。它在运行时和测试类路径中,但不在编译类路径中。
test:依赖关系对于正常使用,该应用程序不是必须的。并且仅在测试编译和执行阶段可用。它不是可传递的。
system:必须显示提供jar的位置(可以通过systemPath标签指定),不会去 Maven仓库中查找。

相关文章

网友评论

      本文标题:[java]31、Maven

      本文链接:https://www.haomeiwen.com/subject/oqtyjrtx.html