bin包:maven所有可运行指令,运行maven主要运行里面的mvn.cmd
boot包:maven的类加载器,maven要自己管理一套java的运行程序,因为maven是java做的,它有它自己独立的类加载器
conf包:maven的配置管理,目录下有maven的配置文件
lib包:maven运行依赖的jar包
mvn -v
仓库分类
私服的作用
坐标:Maven中的坐标用于描述仓库中资源的位置
https://repo1.maven.org/maven2/
主要组成:
groupId:定义当前Maven项目隶属组织名称(通常是域名反写,例如org.mybatis)
artifactId:定义当前Maven项目名称(通常是模块名称,例如CRM,SMS) version:定义当前项目版本号
packaging:定义该项目的打包方式
示例:
<dependency>
<groupId>org.elasticsearch.clientgroupId>
<artifactId>elasticsearch-rest-high-level-clientartifactId>
<version>7.12.1version>
dependency>
Maven启动后,会自动保存下载的资源到本地仓库,仓库位置可在conf/settings.xml下查看
其中的默认位置就是:
<localRepository>${user.home}/.m2/repositorylocalRepository>
随便找个maven中的jar包,用压缩软件打开:
返回上一层:
查找所有pom.的文件,其中pom-4.0.0.xml最特殊:
pom-4.0.0.xml中,Maven默认连接的远程仓库的位置(当然,我们不是在这里面改,只是了解):
<repositories>
<repository>
<id>centralid>
<name>Central Repositoryname>
<url>https://repo.maven.apache.org/maven2url>
<layout>defaultlayout>
<snapshots>
<enabled>falseenabled>
snapshots>
repository>
repositories>
可以将其替换为镜像仓库,修改conf/settings.xml,配置为阿里云的镜像仓库
(https://www.bilibili.com/video/BV1Ah411S7ZE/p=5&spm_id_from=pageDriver&vd_source=5061eb5d9c29eda75a5e1981cbcb4d12)
<mirrors>
<mirror>
<id>nexus-aliyunid>
<mirrorOf>centralmirrorOf>
<name>Nexus aliyunname>
<url>http://maven.aliyun.com/nexus/content/groups/publicurl>
mirror>
mirrors>
Maven工程目录结构
代码
在src/main/java/com/hongyi/下新建Demo.java
package com.hongyi;
public class Demo{
public String say(String name) {
System.out.println("Hello, " + name);
return "Hello, " + name;
}
}
在src/test/java/com/hongyi/下新建DemoTest.java
package com.hongyi;
import org.junit.Test;
import org.junit.Assert;
public class DemoTest {
@Test
public void testSay() {
Demo d = new Demo();
String ret = d.say("Maven");
Assert.assertEquals("Hello, Maven", ret);//Assert断言语句,类似于中断,调试的一种
}
}
在项目根目录(和src同级)下新建一个pom.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<!-- pom文件所需的xml头,固定 -->
<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<!-- 组织名称(域名反写) -->
<groupId>com.hongyi</groupId>
<!-- 项目名称 -->
<artifactId>project-maven</artifactId>
<version>1.0</version>
<packaging>jar</packaging>
<!-- 依赖的资源 -->
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
<!-- 设定字符集和maven编译java程序时的jdk版本,这里是jdk9 -->
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>9</maven.compiler.source>
<maven.compiler.target>9</maven.compiler.target>
</properties>
</project>
Maven常用构建命令:使用mvn开头,后面添加功能参数,可以一次执行多个命令,使用空格分隔
使用示例
mvn compile
如果jdk版本指定过低,会报以下错误:
1、此时查看本地仓库,会有下载好的资源
2、此时,在项目根目录中也会有编译完成的项目target:存放运行结果的
3、执行clean命令,会清除target目录
mvn clean
4、执行test命令,也会编译生成target,并且附带有测试结果文件
mvn test
测试报告:
5、执行package命令,会将源程序编译并打包
mvn package
6、执行install命令,会将该项目安装到本地仓库
mvn install
查看本地仓库,按照项目的groupId查找,例如com.hongyi:
其中项目名称artifactId又决定了一层目录,这里为project-maven:
版本号version又决定了一层目录:
最后的文件内容,即为打好包的jar包和对应的pom文件:
mvn archetype:generate
-DgroupId={project-packaging}
-DartifactId={project-name}
-DarchetypeArtifactId=maven-archetype-quickstart
-DinteractiveMode=false
mvn archetype:generate -DgroupId=com.itheima -DartifactId=java-project -
DarchetypeArtifactId=maven-archetype-quickstart -Dversion=0.0.1-snapshot -
DinteractiveMode=false
mvn archetype:generate -DgroupId=com.itheima -DartifactId=web-project -
DarchetypeArtifactId=maven-archetype-webapp -Dversion=0.0.1-snapshot -
DinteractiveMode=false
1、创建目录最好是空目录(插件要求创建的目录内不能有maven结构)
cmd控制台内跳转到project目录下,输入上面“创建Java工程代码”生成maven项目,其中DartifactId=java-project就是项目名
2、其中pom.xml自带junit配置
3、maven项目缺少resources文件
2、打开setting,搜索maven并进行相关配置:
3、打开setting structure新建模块module:
4、然后标记各个目录的功能(如果颜色是灰色手动选择文件类型,缺少resources则在文件夹右键添加):
5、按照上一节的操作,添加各个类,最后的项目结构如下:
![在这里插入图片描述](https://img-blog.csdnimg.cn/68309bca00f74b0a901928eca9a41eea.png
6、在idea右侧有maven相关的操作:
与mvn的各种命令相同,不再赘述。
7、除了以上方法外,还可以配置Maven运行,达到以上效果
编译
清理
1、新建一个模块。选择骨架创建maven项目,这里选择quick-start
2、项目结构如下:
3、按照maven项目的经典结构进行改造,改造后的结果如下:
1、新建一个模块。选择骨架创建maven的web项目,这里选择webapp
2、项目结构如下:
3、按照maven项目的经典结构进行改造,改造后的结果如下:
4、在webapp下添加index.jsp
1、将web.xml和pom.xml多余部分删除
2、在https://mvnrepository.com/search?q=tomcat+maven中搜索tomcat maven 找到图中的选项点击
第一个就是我们要的
复制里面的地址
3、将复制的地址在pom.xml构建插件,并远程运行
点击下方连接打开页面
4、还可以配置网址路径
5、为避免每次都要打开右侧Maven点击tomcat7的run插件,可以做如下配置:
6、pom中各标签作用意思
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0modelVersion>
<packaging>warpackaging>
<groupId>com.itheimagroupId>
<artifactId>web01artifactId>
<version>1.0-SNAPSHOTversion>
<dependencies>
<dependency>
<groupId>junitgroupId>
<artifactId>junitartifactId>
<version>4.12version>
<scope>testscope>
dependency>
dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.tomcat.mavengroupId>
<artifactId>tomcat7-maven-pluginartifactId>
<version>2.1version>
<configuration>
<port>80port>
<path>/path>
configuration>
plugin>
plugins>
build>
project>
1、创建三个maven模块,project1,project2,project3,分别添加log4j的依赖,版本号依次为2.13.0,2.13.1,1.2.12,项目结构如下:
<dependencies>
<dependency>
<groupId>junitgroupId>
<artifactId>junitartifactId>
<version>4.12version>
dependency>
dependencies>
示例
1、project2依赖project3:
<dependency>
<groupId>com.hongyigroupId>
<artifactId>project3artifactId>
<version>1.0-SNAPSHOTversion>
dependency>
2、在project3中添加junit的依赖
<dependency>
<groupId>junitgroupId>
<artifactId>junitartifactId>
<version>4.12version>
dependency>
3、查看此时的依赖关系
对当前项目project2而言,project3和log4j:2.13.1为1度依赖,而project3的log4j:2.13.2为2度依赖,因此被忽略(omitted)
可选依赖是指对外隐藏当前所依赖的资源,即不透明性。配置是在被依赖方。
可选依赖用来控制当前依赖是否向下传递成为间接依赖;
optional 默认值为 false,表示可以向下传递称为间接依赖;
若 optional 元素取值为 true,则表示当前依赖不能向下传递成为间接依赖。
<dependency>
<groupId>junitgroupId>
<artifactId>junitartifactId>
<version>4.12version>
<optional>trueoptional>
dependency>
排除依赖是主动断开依赖的资源,被排除的资源不需要指定版本。配置是在依赖方。
例如project2要排除掉project3中的依赖log4j:2.13.2(虽然根据依赖冲突的解决也没有生效)。在project2的pom文件中添加:
<dependency>
<groupId>com.hongyigroupId>
<artifactId>project3artifactId>
<version>1.0-SNAPSHOTversion>
<exclusions>
<exclusion>
<groupId>org.apache.logging.log4jgroupId>
<artifactId>log4j-coreartifactId>
exclusion>
exclusions>
dependency>
执行结果:
发现project2中没有了log4j:2.13.2的依赖。只剩下junit的依赖
依赖的jar默认情况可以在任何地方使用,可以通过scope标签设定其作用范围
主程序范围有效(main文件范围内)
测试程序范围有效(test文件范围内)
是否参与打包(package指令范围内)
示例
例如在project2中新增依赖:
<dependency>
<groupId>org.mybatisgroupId>
<artifactId>mybatisartifactId>
<version>3.5.9version>
<scope>testscope>
dependency>
带有依赖范围的资源在进行传递时,作用范围将受到影响。
以间接依赖是否能打包,即runtime为主,判断范围是否受影响。只有能打包才能被用。
(如项目1依赖项目2,项目2范围必须能被打包,项目1中才能出现,且项目1中项目2依赖的范围,变成项目1的范围)
Maven构建生命周期描述的是一次构建过程经历了多少个事件
Maven对项目构建的生命周期划分为3套:
clean生命周期
default构建生命周期
例如当执行mvn compile命令时,会从头(mvn validate)开始执行命令至mvn compile初。
又如执行mvn package命令时,也会从头开始执行,直到mvn package命令处停止。
site构建生命周期
在官网中可以查阅到各种插件:
理解:生命周期相当于人活到了几岁,而插件相当于在几岁时需要做哪些事情。
演示示例——自定义插件
1、项目搭建:在project3中的主类和测试类中分别创建Demo.java和DemoTest.java
public class Demo {
public void run() {
System.out.println("source code plugin...");
}
}
public class DemoTest {
public void test() {
System.out.println("test source code plugin...");
}
}
2、自定义插件写在标签中。在project3的pom文件中写入:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.pluginsgroupId>
<artifactId>maven-source-pluginartifactId>
<version>3.2.1version>
<executions>
<execution>
<goals>
<goal>jargoal>
goals>
<phase>generate-test-resourcesphase>
execution>
executions>
plugin>
plugins>
build>
此处演示在generate-test-resources处自定义了一个插件,该插件生成项目的源码文件。意味着,例如执行mvn test时,会执行到该插件。执行mvn compile时,不会执行到该插件。而且该插件只会生成main中的源代码。
1、刷新maven后,可看到该插件:
2、执行mvn compile,发现target并没有生成源码文件
3、执行mvn test,发现生成了源码文件
打开文件,发现是main的源码:
1、添加一个goal为test-jar。首先执行clean,再执行package:
发现有打包好的工程文件、main源码和test源码。
以下为Maven高级部分
目标:将ssm项目拆分。
如上图所示,将ssm项目拆分成右侧几个模块。
1、新建一个maven项目模块
2、拷贝原始项目中对应的相关代码到该模块中,删除不必要的测试类和配置文件
这个模块的pom没有依赖任何资源
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0modelVersion>
<groupId>com.itheimagroupId>
<artifactId>ssm_pojoartifactId>
<version>1.0-SNAPSHOTversion>
<properties>
<maven.compiler.source>9maven.compiler.source>
<maven.compiler.target>9maven.compiler.target>
properties>
project>
1、新建模块ssm_dao,拷贝原始项目中对应的相关代码到该模块中,删除不必要的测试类和非dao层的配置文件。
2、对于dao层的pom文件内容如下(即所需的资源):注意ssm_pojo资源的导入
<dependencies>
<dependency>
<groupId>com.itheimagroupId>
<artifactId>ssm_pojoartifactId>
<version>1.0-SNAPSHOTversion>
dependency>
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-contextartifactId>
<version>5.1.9.RELEASEversion>
dependency>
<dependency>
<groupId>org.mybatisgroupId>
<artifactId>mybatisartifactId>
<version>3.5.3version>
dependency>
<dependency>
<groupId>mysqlgroupId>
<artifactId>mysql-connector-javaartifactId>
<version>5.1.47version>
dependency>
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-jdbcartifactId>
<version>5.1.9.RELEASEversion>
dependency>
<dependency>
<groupId>org.mybatisgroupId>
<artifactId>mybatis-springartifactId>
<version>2.0.3version>
dependency>
<dependency>
<groupId>com.alibabagroupId>
<artifactId>druidartifactId>
<version>1.1.16version>
dependency>
<dependency>
<groupId>com.github.pagehelpergroupId>
<artifactId>pagehelperartifactId>
<version>5.1.2version>
dependency>
dependencies>
3、运行mvn compile发现构建失败:
原因在于,导入了ssm_pojo的资源坐标,但是在本地仓库中没有这个资源,因此需要对ssm_pojo项目进行mvn install,将其安装到本地仓库:
然后再对ssm_dao进行编译,通过。
4、对dao的配置文件applicationContext.xml进行修改,删去非dao层的代码:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<context:component-scan base-package="com.itheima"/>
<context:property-placeholder location="classpath*:jdbc.properties"/>
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
<property name="driverClassName" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
bean>
<bean class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="typeAliasesPackage" value="com.itheima.domain"/>
<property name="plugins">
<array>
<bean class="com.github.pagehelper.PageInterceptor">
<property name="properties">
<props>
<prop key="helperDialect">mysqlprop>
<prop key="reasonable">trueprop>
props>
property>
bean>
array>
property>
bean>
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.itheima.dao"/>
bean>
beans>
1、新建模块ssm_service,拷贝原始项目中对应的相关代码到该模块中,删除不必要的非service层的配置文件。注意保留测试类test。
2、对于service层的pom文件内容如下(即所需的资源):注意ssm_dao资源的导入,此外无需导入ssm_pojo的资源,因为他间接依赖了ssm_dao的ssm_pojo资源。对ssm_dao进行install命令。
<dependencies>
<dependency>
<groupId>com.itheimagroupId>
<artifactId>ssm_daoartifactId>
<version>1.0-SNAPSHOTversion>
dependency>
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-contextartifactId>
<version>5.1.9.RELEASEversion>
dependency>
<dependency>
<groupId>junitgroupId>
<artifactId>junitartifactId>
<version>4.12version>
dependency>
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-testartifactId>
<version>5.1.9.RELEASEversion>
dependency>
dependencies>
3、对ssm_service的配置文件applicationContext.xml进行修改,删去非service层的代码,此外将其修改为applicationContext-service.xml。同理将ssm_dao的配置文件名修改为applicationContext-dao.xml:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">
<context:component-scan base-package="com.itheima"/>
<tx:annotation-driven transaction-manager="txManager"/>
<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
bean>
beans>
4、修改单元测试引入的配置文件名,由单个文件修改为多个文件:
@RunWith(SpringJUnit4ClassRunner.class)
// 修改这里:要引入dao层的配置文件
@ContextConfiguration(locations = {"classpath:applicationContext-service.xml", "classpath:applicationContext-dao.xml"})
public class UserServiceTest {
@Autowired
private UserService userService;
@Test
public void testSave(){
User user = new User();
user.setUserName("Jock");
user.setPassword("root");
user.setRealName("Jockme");
user.setGender(1);
user.setBirthday(new Date(333333000000L));
userService.save(user);
}
@Test
public void testDelete(){
User user = new User();
userService.delete(2);
}
@Test
public void testUpdate(){
User user = new User();
user.setUuid(1);
user.setUserName("Jockme");
user.setPassword("root");
user.setRealName("JockIsMe");
user.setGender(1);
user.setBirthday(new Date(333333000000L));
userService.update(user);
}
@Test
public void testGet(){
User user = userService.get(1);
System.out.println(user);
}
@Test
public void testGetAll(){
PageInfo<User> all = userService.getAll(2, 2);
System.out.println(all);
System.out.println(all.getList().get(0));
System.out.println(all.getList().get(1));
}
@Test
public void testLogin(){
User user = userService.login("Jockme", "root");
System.out.println(user);
}
}
5、运行mvn test进行用例测试,通过。最后执行mvn install,将service层代码安装到本地仓库中。
1、利用骨架webapp新建maven模块ssm_controller。拷贝原始项目中对应的相关代码到该模块中,删除不必要的非controller层的配置文件。
2、对于controller层的pom文件内容如下(即所需的资源):注意ssm_service资源的导入和间接依赖:
<dependencies>
<dependency>
<groupId>com.itheimagroupId>
<artifactId>ssm_serviceartifactId>
<version>1.0-SNAPSHOTversion>
dependency>
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-webmvcartifactId>
<version>5.1.9.RELEASEversion>
dependency>
<dependency>
<groupId>com.fasterxml.jackson.coregroupId>
<artifactId>jackson-databindartifactId>
<version>2.9.0version>
dependency>
<dependency>
<groupId>javax.servletgroupId>
<artifactId>javax.servlet-apiartifactId>
<version>3.1.0version>
<scope>providedscope>
dependency>
dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.tomcat.mavengroupId>
<artifactId>tomcat7-maven-pluginartifactId>
<version>2.1version>
<configuration>
<port>80port>
<path>/path>
configuration>
plugin>
plugins>
build>
3、修改web.xml中的加载spring环境的配置文件(dao层和service层),使用*进行通配
<context-param>
<param-name>contextConfigLocationparam-name>
<param-value>classpath*:applicationContext-*.xmlparam-value>
context-param>
4、配置tomcat服务器并使用postman测试:
http://localhost:8080/user?userName=Mark&password=123456&realName=Hongyi&gender=1&birthday=2022/01/06
数据库中:
分模块开发:
示例
1、创建一个空模块ssm,该项目中只有一个pom文件
2、打包类型定义为pom,并定义当前模块进行构建时关联的其他模块名称
<packaging>pompackaging>
<modules>
<module>../ssm_daomodule>
<module>../ssm_pojomodule>
<module>../ssm_controllermodule>
<module>../ssm_servicemodule>
modules>
注意:当前参与聚合操作的模块最终执行顺序与模块间的依赖关系有关,与配置顺序无关。如果当前模块间没有依赖关系,则与配置顺序无关。
3、执行mvn install并观察:
示例
1、在父工程ssm中声明依赖管理,将子工程所有的依赖都声明在此处。利用标签
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.itheimagroupId>
<artifactId>ssm_pojoartifactId>
<version>1.0-SNAPSHOTversion>
dependency>
<dependency>
<groupId>com.itheimagroupId>
<artifactId>ssm_daoartifactId>
<version>1.0-SNAPSHOTversion>
dependency>
<dependency>
<groupId>com.itheimagroupId>
<artifactId>ssm_serviceartifactId>
<version>1.0-SNAPSHOTversion>
dependency>
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-webmvcartifactId>
<version>5.1.9.RELEASEversion>
dependency>
<dependency>
<groupId>com.fasterxml.jackson.coregroupId>
<artifactId>jackson-databindartifactId>
<version>2.9.0version>
dependency>
dependencies>
dependencyManagement>
2、在子工程中定义父工程
<parent>
<artifactId>ssmartifactId>
<groupId>com.itheimagroupId>
<version>1.0-SNAPSHOTversion>
<relativePath>../ssm/pom.xmlrelativePath>
parent>
3、此时,子工程的依赖的版本号可以省略,例如:
<dependency>
<groupId>com.itheimagroupId>
<artifactId>ssm_pojoartifactId>
dependency>
4、同理,插件的管理也可以在父工程中声明:
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.tomcat.mavengroupId>
<artifactId>tomcat7-maven-pluginartifactId>
<version>2.1version>
<configuration>
<port>80port>
<path>/path>
configuration>
plugin>
plugins>
pluginManagement>
build>
5、子工程中插件的版本和相关配置就可以省略
<build>
<plugins>
<plugin>
<groupId>org.apache.tomcat.mavengroupId>
<artifactId>tomcat7-maven-pluginartifactId>
plugin>
plugins>
build>
作用:
聚合用于快速构建项目
继承用于快速配置
相同点:
聚合与继承的pom.xml文件打包方式均为pom,可以将两种关系制作到同一个pom文件中
聚合与继承均属于设计型模块,并无实际的模块内容
不同点:
聚合是在当前模块中配置关系,聚合可以感知到参与聚合的模块有哪些
继承是在子模块中配置关系,父模块无法感知哪些子模块继承了自己
示例
1、在父工程中的pom文件内:
<properties>
<maven.compiler.source>11maven.compiler.source>
<maven.compiler.target>11maven.compiler.target>
<spring.version>5.1.9.RELEASEspring.version>
<junit.version>4.12junit.version>
properties>
2、调用:
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-webmvcartifactId>
<version>${spring.version}version>
dependency>
例如,父工程和子工程的版本号一样,可以直接使用父工程的版本内置属性${version}:
<dependency>
<groupId>com.itheimagroupId>
<artifactId>ssm_pojoartifactId>
<version>${version}version>
dependency>
<dependency>
<groupId>com.itheimagroupId>
<artifactId>ssm_daoartifactId>
<version>${version}version>
dependency>
<dependency>
<groupId>com.itheimagroupId>
<artifactId>ssm_serviceartifactId>
<version>${version}version>
dependency>
其他的属性类别还有Setting属性、Java系统属性、环境变量属性,了解即可。
SNAPSHOT快照版本
项目开发过程中,为方便团队成员合作,解决模块间相互依赖和时时更新的问题,开发者对每个模块进行构建的时候,输出的临时性版本叫快照版本(测试阶段版本)
快照版本会随着开发的进展不断更新
RELEASE发布版本
项目开发到进入阶段里程碑后,向团队外部发布较为稳定的版本,这种版本所对应的构件文件是稳定的,即便进行功能的后续开发,也不会改变当前发布版本内容,这种版本称为发布版本
约定规范:
<主版本>.<次版本>.<增量版本>.<里程碑版本>
主版本∶表示项目重大架构的变更,如∶spring5相较于spring4的迭代次版本∶表示有较大的功能增加和变化,或者全面系统地修复漏洞
增量版本∶表示有重大漏洞的修复
里程碑版本∶表明一个版本的里程碑(版本内部)。这样的版本同下一个正式版本相比,相对来说不是很稳定,有待更多的测试
范例:
5.1.9.RELEASE
配置文件引用pom属性:
作用:在任意配置文件中加载pom文件中定义的属性
调用格式:${ }
示例
1、例如jdbc.properties要读取父工程pom文件中的属性。首先在父工程pom文件中的标签中:
<bulid>
<resources>
<resource>
<directory>${project.basedir}/src/main/resourcesdirectory>
<filtering>truefiltering>
resource>
resources>
<testResources>
<testResource>
<directory>${project.basedir}/src/test/resourcesdirectory>
<filtering>truefiltering>
testResource>
testResources>
bulid>
设置属性:
<properties>
<maven.compiler.source>11maven.compiler.source>
<maven.compiler.target>11maven.compiler.target>
<spring.version>5.1.9.RELEASEspring.version>
<junit.version>4.12junit.version>
<jdbc.url>jdbc:mysql://127.0.0.1:3306/ssm_db?useSSL=falsejdbc.url>
properties>
2、jdbc.properties内容:
jdbc.driver=com.mysql.jdbc.Driver
# 引用pom文件中的属性
jdbc.url=${jdbc.url}
jdbc.username=root
jdbc.password=12345678
配置方法
1、在父工程pom文件中:
<profiles>
<profile>
<id>pro_envid>
<properties>
<jdbc.url>jdbc:mysql://127.0.0.1:3306/ssm_db?useSSL=falsejdbc.url>
properties>
profile>
<profile>
<id>dev_envid>
<properties>
<jdbc.url>jdbc:mysql://127.0.0.2:3306/ssm_db?useSSL=falsejdbc.url>
properties>
<activation>
<activeByDefault>trueactiveByDefault>
activation>
profile>
profiles>
2、加载指定的环境
mvn 指令 -P 环境id
mvn install -P dev_env
例如:新建一个maven配置,在开发环境执行install命令:
执行后查看jdbc.properties文件:
可见是按照开发环境的地址127.0.0.2进行项目安装的。
应用场景
使用操作界面跳过测试
搭建步骤
1、服务器首先必须配置好java的环境
2、将下载好的压缩包解压缩至任意位置
vi /etc/profile
export NEXUS_HOME=/usr/local/nexus #nexus的目录
export RUN_AS_USER=root
source /etc/profile
2、进入nexus目录并运行
./bin/nexus start
./bin/nexus stop
私服资源的获取:下图所示,我们要把快照版的资源放在一个仓库里,把发行版的资源放在一个仓库里,第三方公共资源放在一个仓库里,这样方便进行管理,势必要对仓库进行分类和分组。
仓库分类
宿主仓库hosted:保存无法从中央仓库获取的资源
自主研发
第三方非开源项目
代理仓库proxy:代理远程仓库,通过nexus访问其他公共仓库,例如中央仓库
操作实例
1、新建一个仓库,例如heima-release
2、仓库类型选择宿主仓库maven2(hosted)
3、创建好后,将其加入到maven-public仓库组中,方便管理
4、将ssm_pojo打包好的jar文件上传至heima-release仓库中
5、查看仓库里的ssm_pojo资源
idea环境中的资源上传与下载:
1、配置本地仓库访问私服的权限(setting.xml)
<server>
<id>heima-releaseid>
<username>adminusername>
<password>XXXXXXXXXpassword>
server>
<server>
<id>heima-snapshotid>
<username>adminusername>
<password>XXXXXXXXXpassword>
server>
2、配置本地仓库资源的下载来源
<mirror>
<id>nexus-aliyunid>
<name>nexus-aliyunname>
<url>http://maven.aliyun.com/nexus/content/groups/publicurl>
<mirrorOf>centralmirrorOf>
mirror>
<mirror>
<id>heimaid>
<url>XXXXXXXXXXXXurl>
<mirrorOf>*mirrorOf>
mirror>
3、配置当前项目ssm访问私服上传资源的保存位置(pom.xml)
<distributionManagement>
<repository>
<id>heima-releaseid>
<url>http://XXXXXXX/repository/heima-release/url>
repository>
<snapshotRepository>
<id>heima-snapshotid>
<url>http://XXXXXXX/repository/heima-snapshot/url>
snapshotRepository>
distributionManagement>
4、执行命令
mvn deploy