Maven高级

文章介绍了Maven项目中如何进行分模块开发,包括DAO层的独立、依赖管理的策略如关闭依赖传递性、排除依赖,以及聚合和继承的概念。同时,提到了属性和版本管理的重要性,以及如何通过配置多环境适应不同的开发阶段。最后,文章提及了Maven私服在实际开发中的应用。
摘要由CSDN通过智能技术生成

分模块开发和设计

 其实,分模块和设计就是将功能更细分化成一个模块,比如dao层,单独分离出来。一个模块只做他对应的功能,其余的模块统统不做。

依赖管理

 暂且,求参照这个图,没啥好管理的。

1.对于我们能拿到里面的依赖。(我们不想别人用我这个依赖)

关闭依赖传递性

 <!-- 关闭依赖传递性,也就是说直接依赖和间接依赖不起作用了-->
             <!--默认是false,开启依赖 -->
            <optional>true</optional>

 2.对于我们拿不到里面的依赖。(第三方的依赖)

排除依赖,排除了这个依赖的某个依赖。这对象相当于,我们使用某个地方依赖时,但是不需要指定版本号。

<dependency>
      <groupId>com.itheima</groupId>
      <artifactId>maven_04_dao</artifactId>
      <version>1.0-SNAPSHOT</version>

      <!--排除依赖是隐藏当前资源对应的依赖关系-->  
      <exclusions>
        <exclusion>
          <groupId>org.mybatis</groupId>
          <artifactId>mybatis</artifactId>
        </exclusion>
      </exclusions>

继承与聚合

聚合

 假如,我们pojo模块更新,但是crm和order等模块还依赖这pojo没更新的资源,那么我们编译其他模块会报错,但是编译pojo能通过,所以我们用聚合,就相当于更新编写pojo也会报错了。

 <!--打包方式,pom-->
    <packaging>pom</packaging>

    <!--&lt;!&ndash;设置管理的模块名称,相对路径&ndash;&gt;-->
    <modules>
        <module>../maven_02_ssm</module>
        <module>../maven_03_pojo</module>
        <module>../maven_04_dao</module>
    </modules>

先放置一个pom.xml,设置要管理的模块名称,打包方式为pom。

构建时,优先构建没有依赖的的依赖。

继承

写父工程,就是为了做统一的管理。把好几模块复用的抽出来,封装到一起。

继承父模块的依赖坐标,是继承!其实那些都是只能继承的,我们也可以用依赖管理设置默认不继承,子模块要想用,自己加,但是不要写版本。

这是在子模块中要继承的坐标

<!--配置当前工程继承自parent工程的pom.xml坐标-->
  <parent>
    <!-- 父模块的坐标 -->
    <groupId>com.itheima</groupId>
    <artifactId>maven_01_parent</artifactId>
    <version>1.0-RELEASE</version>
    <!-- 父模块的相对路径 -->
    <relativePath>../maven_01_parent/pom.xml</relativePath>
  </parent>

父模块要管理的坐标(dependencyManagement 标签是进行依赖版本锁定,但是并没有导入对应的依赖;如果我们工程需要那个依赖只需要引入依赖的 groupidartifactId 不需要定义 version)


 <!--定义依赖管理-->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.12</version>
                <scope>test</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

属性

就是,你看就算提高代码复用性了,还有一个缺点?是不是,我们那么多的坐标,版本号是不是要兼容,但是我们因为某个版本更新了,项目经理觉得他比较好,改了,但是后来发现不好,但是以内坐标太多找不到,那么是不是既我们要把所有模块的坐标版本号,集中起来统一管理。

就tm是个变量,占位符。

	<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-webmvc</artifactId>
			<version>${spring.version}</version>
            <!--变量区域,就是占位符-->
		</dependency>



<!--定义属性-->
	<properties>
		<spring.version>5.2.10.RELEASE</spring.version>
		<junit.version>4.12</junit.version>
		<mybatis-spring.version>1.3.0</mybatis-spring.version>
		<!--<jdbc.url>jdbc:mysql://127.0.0.1:3306/ssm_db</jdbc.url>-->
	</properties>

资源文件(properties)引用属性(将配置文件,也交给pom.xml来管理)

 

 

 

 版本管理

第一个快照版本(不稳定版),第二个稳定版。

 多环境开发

就是把你要用的属性,再给tm的分组话,比如下属开发环境一组自定义属性,生产环境一组自定义属性。

<!--配置多环境-->
	<profiles>
		<!--开发环境-->
		<profile>
			<id>env_dep</id>
			<properties>
				<jdbc.url>jdbc:mysql://127.1.1.1:3306/ssm_db</jdbc.url>
			</properties>
			<!--设定是否为默认启动环境-->
			<activation>
				<activeByDefault>true</activeByDefault>
			</activation>
		</profile>
		<!--生产环境-->
		<profile>
			<id>env_pro</id>
			<properties>
				<jdbc.url>jdbc:mysql://127.2.2.2:3306/ssm_db</jdbc.url>
			</properties>
		</profile>
		<!--测试环境-->
		<profile>
			<id>env_test</id>
			<properties>
				<jdbc.url>jdbc:mysql://127.3.3.3:3306/ssm_db</jdbc.url>
			</properties>
		</profile>
	</profiles>

 2.通过点击这个,mvn install(maven执行) -P env_dep,运行该项目。

 跳过测试

<plugins>
			<plugin>
				<artifactId>maven-surefire-plugin</artifactId>
				<version>2.12.4</version>
				<configuration>
					<!--true,排除这个不参与test测试-->
					<skipTests>false</skipTests>
					<!--排除掉不参与测试的内容-->
					<excludes>
						<exclude>**/BookServiceTest.java</exclude>
					</excludes>
				</configuration>
			</plugin>
		</plugins>

Maven私服

无所叼为了,以后实际开发中采用。

Maven-12-私服简介与安装_哔哩哔哩_bilibili

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

本郡主是喵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值