Maven高级
今天介绍以下几个内容:
- 聚合
- 继承
- 属性
- 版本管理
- 资源配置
- 多环境开发配置
- 跳过测试
- 私服
聚合
创建一个父类工程,在pom文件中配置:
<!--聚合父项目指定打包方式为pom-->
<packaging>pom</packaging>
<!--指定管理的子项目-->
<modules>
<module>../../ssm_pojo</module>
<module>../../ssm_dao</module>
<module>../../ssm_service</module>
<module>../../ssm_controller</module>
</modules>
继承
在子工程pom文件中配置父类工程依赖:
<parent>
<groupId>com.ys</groupId>
<artifactId>ssm</artifactId>
<version>1.0-SNAPSHOT</version>
<relativePath>../springmvc_ssm/ssm/pom.xml</relativePath>
</parent>
在父类工程中定义管理依赖:
<dependencyManagement>
<dependencies>
<!--导入资源文件pojo-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.1.9.RELEASE</version>
</dependency>
</dependencies>
</dependencyManagement>
在子工程中添加依赖,并且不用再指定依赖的版本,版本统一按照父类工程的执行:
<!--spring环境-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
</dependency>
属性
- 自定义属性
在父工程的pom配置文件中定义:
<properties>
<spring.version>5.1.9.RELEASE</spring.version>
<junit.version>4.12</junit.version>
</properties>
使用属性:${spring.version}
<!--spring环境-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
- 内置属性
在这里举例两个内置属性:${project.basedir} , ${project.version}
<resources>
<resource>
<directory>${project.basedir}/src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
<dependency>
<groupId>com.ys</groupId>
<artifactId>ssm_pojo</artifactId>
<version>${project.version}</version>
</dependency>
- Setting属性
使用Maven配置文件setting.xml中的标签属性,用于动态配置
${settings.localRepository}
- Java系统属性
读取Java系统属性:
${user.home}
- 环境变量属性
使用Maven配置文件setting.xml中的标签属性,用于动态配置:
${env.JAVA_HOME}
版本管理
资源配置
将工程中的资源配置到pom文件中
例如:jdbc.properties
#使用Maven中的资源管理,配置在ssm中的pom.xml中
jdbc.driver=${jdbc.driver}
jdbc.url=${jdbc.url}
jdbc.username=${jdbc.username}
jdbc.password=${jdbc.password}
在父工程的配置文件中:
<properties>
<jdbc.driver>com.mysql.jdbc.Driver</jdbc.driver>
<jdbc.url>jdbc:mysql://localhost:3306/ssmdb</jdbc.url>
<jdbc.username>root</jdbc.username>
<jdbc.password>root</jdbc.password>
</properties>
<!--扫描工程所在目录的资源文件-->
<resources>
<resource>
<directory>${project.basedir}/src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
多环境开发配置
在父工程的pom配置文件中配置:
<profiles>
<profile>
<!--配置此开发环境的唯一id-->
<id>dep_env</id>
<!--配置开发环境需要的资源属性-->
<properties>
<jdbc.driver>com.mysql.jdbc.Driver</jdbc.driver>
<jdbc.url>jdbc:mysql://localhost:3306/ssmdb</jdbc.url>
<jdbc.username>root</jdbc.username>
<jdbc.password>root</jdbc.password>
</properties>
<!--设置此环境为默认的启动环境-->
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<!--配置测试环境id-->
<id>test_env</id>
<properties>
<jdbc.driver>com.mysql.jdbc.Driver</jdbc.driver>
<jdbc.url>jdbc:mysql://localhost:3306/testdb</jdbc.url>
<jdbc.username>root</jdbc.username>
<jdbc.password>root</jdbc.password>
</properties>
</profile>
</profiles>
加载指定环境配置:
mvn 指令 –P 环境id
跳过测试
在这里介绍两种方式:
- 直接在Maven的生命周期中将test设为Skip Tests
- 使用Maven插件Maven Helper启动指令:
mvn instal -D skipTests (可以省略mvn)
私服
本次搭建私服使用Nexus服务器,先介绍一下资源在私服的获取方式:
Nexus下载地址
在私服的仓库分类:
启动私服,使用浏览器访问私服:
http://localhost:8081
创建两个仓库,加入到仓库组中,下面的步骤会用到:
创建的步骤就不截图了,很简单
在IDEA中的资源上传与下载
第一步:在Maven的安装目录中找到setting.xml文件,修改配置如下
在servers标签中加入
<server>
<id>ys-release</id>
<username>admin</username>
<password>admin</password>
</server>
<server>
<id>ys-snapshots</id>
<username>admin</username>
<password>admin</password>
</server>
在mirrors标签中加入
<!--自定义的私服 -->
<mirror>
<id>nexus-ys</id>
<mirrorOf>*</mirrorOf>
<url>http://localhost:8081/repository/maven-public/</url>
</mirror>
url标签就粘贴自己加入的仓库组的地址:
第二步:在IDEA中配置对应的仓库和私服地址:
在父工程的pom文件中配置:
<!--私服上传管理-->
<distributionManagement>
<repository>
<!--上传到私服的哪个仓库-->
<id>ys-snapshots</id>
<!--私服仓库的url-->
<url>http://localhost:8081/repository/ys-snapshots/</url>
</repository>
</distributionManagement>
第三步:在Maven的生命周期处点击deploy就可以上传到私服仓库
如果有不恰当的地方,欢迎指正。