1,作用

maven可以管理jar文件,自动下载jar和其他文档,源代码;

管理jar包依赖;

编译程序,把java文件编译成字节码文件(class);

测试代码;

打包文件,形成jar/war;

部署项目;

maven支持的构建包括:清理,编译,测试,运行,打包,部署;

打包:把所有的class文件,配置文件等资源文件放到一个压缩文件中,通常java程序,压缩文件是jar包;对于web应用,压缩文件是war包;

2,maven核心概念

(1)POM:项目对象模型,可以控制构建项目的过程。

(2)约定的目录结构

(3)坐标

(4)依赖管理

(5)仓库管理

(6)生命周期:maven构建项目的构成

(7)插件和目标:执行maven构架的时候用的工具

3,安装

MAVEN依赖于java,需要指定JAVA_HOME

验证:mvn -v

maven打包上传远程仓库 maven发布到远程仓库的命令_jar包

验证 cd "D:\Program Files (x86)\JetBrains\IdeaWorkspace"

maven打包上传远程仓库 maven发布到远程仓库的命令_jar包_02

2,测试

创建测试类HelloMaven.java

执行maven编译命令:mvn compile,编译src/main目录下的所有java文件

默认放到中央仓库,本机默认use\.m2\repository,可以修改

若失败:mvn clean

快速启动cmd技巧,在目录输入cmd,按回车

maven打包上传远程仓库 maven发布到远程仓库的命令_jar包_03

3,仓库

本机仓库

设置本机仓库位置

1,修改maven配置文件,maven安装目录/conf/setting.xml;

修改

<localRepository>D:\Program Files (x86)\JetBrains\maven\repository</localRepositor

远程仓库

中央仓库:最权威,中央仓库地址:

Index of /

中央仓库镜像:中央仓库的镜像

私服:公司内部使用

仓库的使用步骤:maven首先查:本地仓库->私服->中央仓库镜像->中央仓库

4,POM项目对象模型

pom.xml

(1)mavenVersion:模型的版本,maven2/3为4.0.0

(2)groupId:组织Id,一般为公司域名倒写+项目名,比如:com.baidu.grp.appoIo

artifactId:项目名称,一般以-拼接,比如:grp-appoIo

version:项目版本号,如果项目还在开发,采用不稳定版,版本号后带-SNAPSHOT

version采用三维数字表示,例如:1.0.0

坐标:groupId+artifactId+verison

    <groupId>com.example.demo</groupId>

    <artifactId>demo</artifactId>

    <version>1.0.0-SNAPSHOT</version>

maven中央仓库:

https://mvnrepository.com/

(3)packaging:打包后压缩文件的扩展名,默认是jar,web应用是war

(4)<dependencies>:依赖,相当于java代码中import<dependency>

(5)<properties>:设置属性

(6)<build>:表示与构建相关的配置,例如编译插件的jdk版本

5,Maven生命周期,常用命令

maven生命周期,包括:清理,编译,测试,报告,打包,安装,部署

maven的命令,maven独立使用,通过命令,完成maven的声明周期的执行

maven的插件:maven命令执行时,真正完成功能的是插件,插件就是一些jar文件,一些类

(1)mvn clean:清理(会删除原来编译和测试的目录,即target目录,但是已经install到仓库的不会删除)

(2)mvn compile:编译主程序(会在当前目录下生成一个target,里面存在编译主程序之后生成的字节码文件)

拷贝resource到\target\classes目录下

(3)mvn test-compile:编译测试程序

(4)mvn test :测试(会生成surefire-reports,保存测试结果)

(5)mvn package:打包主程序(会编译,编译测试,测试,并按照pom配置把主程序打包成jar或者war包)

(6)mvn install:安装主程序(会把工程打包,并且按照工程的坐标保存到本地仓库中)

(7)mvn deploy:部署主程序(会把工程打包,并保存到本地仓库,同时会保存到私服中,还会自动把项目部署到web容器中)

执行以上命令必须进入pom所在的目录

6,idea中使用maven

idea自带的不方便,我们要替换idea的配置信息

settting:当前项目配置

maven打包上传远程仓库 maven发布到远程仓库的命令_maven_04

runne:添加:

每次创建项目时, IDEA 要使用插件进行创建,这些插件当你创建新的项目时,它每次都会去中央仓库下载,这样使得创建比较慢。应该创建时,让它找本地仓库中的插件进行创建项目。

-DarchetypeCatalog=internal

archetypeCatalog=internal, maven创建时默认下载网络模板,大约7M,此配置跳过下载,从本地加载

maven打包上传远程仓库 maven发布到远程仓库的命令_linux_05

outer Settings:以后项目配置 同settings

7,使用模板创建项目

先创建一个空项目,再创建New Module,使用模板

maven-archetype-quikstart(简单的java项目)

maven打包上传远程仓库 maven发布到远程仓库的命令_tomcat_06

maven-archetype-webapp(web工程)

1,tomcat远程配置

首先修改linux的tomcat配置:

1,首先进入bin目录

2,新建setenv.sh脚本,在文件中放入下面这句:

CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote= -Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=192.168.145.130"

配置内容来源于官方文档Server tab for a remote configuration

Run/Debug Configuration: Tomcat Server | IntelliJ IDEA

把最后的hostname改为自己的服务器IP,我的是192.168.145.130。

3,给setenv.sh权限 :chmod 750 setenv.sh

4,配置完成之后,直接在bin目录下./startup.sh,启动tomcat,然后在开发机上打开浏览器,输入http://192.168.145.130:8080,可以看到熟悉的tomcat界面。

maven打包上传远程仓库 maven发布到远程仓库的命令_maven_07

sftp设置:

maven打包上传远程仓库 maven发布到远程仓库的命令_linux_08

指定打包项目

maven打包上传远程仓库 maven发布到远程仓库的命令_linux_09

应用名字:

/maven_test

测试:

http://192.168.145.130:8080/maven_test/

另一种方式:将xxx.war包修改为myweb.war,然后直接放到webapps目录下

然后访问

http://192.168.145.130:8080/myweb/

8,Maven依赖范围

test,provided,compile

test:只有测试阶段生效(生成的jar包中不包括)

provided:编译,测试阶段生效(生成的jar包中不包括)

compile:编译,测试,打包,部署阶段生效

9,maven常用属性

(1)maven的属性设置

</properties>设置maven的常用属性

(2)maven的全局变量

${}

(3)资源插件

如果需要把src目录下的文件包放到target/classes目录,作为jar包的一部分,需指定资源文件位置,如下:

指定其他文件进行打包到target/classes目录下

<build>
<resources>
<resource>
<!--所在的目录-->
<directory>src/main/java</directory>
<!--目录下的properties,xml文件会扫描到-->
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<!--不启用过滤,*.properties已经起到过滤作用了-->
<filtering>false</filtering>
</resource>
</resources>
</build>