Maven笔记
项目构建命令
在pom.xml所在目录内运行
mvn compile #编译
mvn clean #清理
mvn test #测试
mvn package #打包
mvn install #安装到本地仓库
tomcat 插件
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.3.1</version>
</plugin>
<plugin>
<!-- https://mvnrepository.com/artifact/org.apache.tomcat.maven/tomcat7-maven-plugin -->
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<path>/wyihe</path>
</configuration>
</plugin>
</plugins>
</build>
聚合
实现统一的清理、编译、打包等操作
1. 创建一个工程,只需要 pom 文件即可,设置模块类型为pom
2. 把需要操作的工程添加进 <modules> 标签中
聚合作用的工程就操作完成了
模块继承
子工程可继承父工程的配置信息
作用:
- 继承依的配置信息
- 继承插件的配置信息
- 只需更改父类的配置信息,子类相关依赖和插件的配置都会自行更改
父类设置
需设置工程类型为pom
设置父类依赖
用 <dependencyManagement> 标签包裹 <dependencies> 标签,里面照常写依赖
父类pom里添加子类依赖
照常将子类添加进 dependencies 标签里
父类pom设置插件
使用标签 pluginManagement ,其他照常
子类设置
pom最上方标记父类pom
relativePath 为父类pom路径
这段写在最上方
为了工程统一,子类的组id和版本应该保持一致,所以直接继承父类,不用再写了
子类依赖和插件的详细配置信息继承父类,所以很多也不用写了
依赖:
插件:
至此,模块继承搞定了
属性
自定义属性
声明
<properties>
<spring.version>5.3.0</spring.version>
</properties>
调用
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
内置属性
project.basedir: 工程目录
version:项目版本
调用
资源配置
配置插件,并标明资源目录
project.basedir
为系统属性,属性内容是工程路径
<build>
<resources>
<resource>
<directory>${project.basedir}/src/main/resources/</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
如果是测试,build 内使用该标签
<testResources>
<testResource>
<directory></directory>
<filtering></filtering>
</testResource>
</testResources>
定义属性名
<properties>
<jdbc.username>wyihe</jdbc.username>
</properties>
在资源文件中使用
jdbc.username=${jdbc.username}
环境配置
实际中需要配置多种环境,如生产环境和开发环境,利用maven可以针对这两种环境配置不同的属性值。
当我们使用不同环境时,会自动使用不同的属性值。
配置两种环境,并使pro_env(生产环境)为默认环境
<profiles>
<profile>
<id>pro_env</id> <!--配置id:生产环境-->
<properties> <!--定义这个环境中使用的属性值-->
<jdbc.url>jdbc:mysql://127.9.9.9:3306/test</jdbc.url>
</properties>
<activation> <!--设置该环境为默认环境-->
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>dep_env</id> <!--配置id:开发环境-->
<properties>
<jdbc.url>jdbc:mysql://127.0.0.0:3306/test</jdbc.url>
</properties>
</profile>
</profiles>
运行不同环境
mvn 指令 -P 环境id
配置 Maven 启动项
私服
启动 nexus
百度网盘 提取码:yjr8
启动
下载nexus,进入bin目录,在cmd中输入指令运行
nexus /run nexus
进入
浏览器输入地址进入服务器
localhots:8081
修改端口号
在该文件中更改端口
etc/nexus-default.properties
配置仓库
创建仓库
创建一个主机仓库
点开后输入仓库名,可以选择 Release ,然后直接点击创建
添加仓库到 public 群组中
将刚才创建的仓库添加进去
上传到仓库
进入仓库
点上传
填写相关信息后上传,可以选择性的生成pom
如果把version版本与库类不同(Release或SNAPSHOT),会不让上传提示错误,这时改一下名字就行了
本地仓库访问私服
配置 services标签:
在Maven的settings.xml
文件中进行配置
在services标签
下,添加仓库
id为仓库名, 用户密码是登录nexus的用户密码
定义几个就配几个
配置mirrors标签
阿里云设置为central,意为从中央仓库拿
自己的设置为*,意为除此之外的从自己的私服里拿
发布到私服
在pom里添加配置:
作为根标签的子标签
运行:根据url访问私服,根据id在settings.xml里找到用户密码,因此id值要与settings.xml里设置的相同
url:仓库的地址
<distributionManagement>
<repository>
<id>acdongla-release</id>
<url>http://localhost:8081/repository/acdongla-release/</url>
</repository>
<snapshotRepository>
<id>acdongla-snapshot</id>
<url>http://localhost:8081/repository/acdongla-snapshot/</url>
</snapshotRepository>
</distributionManagement>
最后 deploy 指定用于发布,会自动发布到私服上