Maven进阶

1、分模块开发与设计(看代码或视频)

将与自己相关的放到一起成为一个模块,无关的删掉,相关资源,使用坐标导入(相关资源先install到本地仓库才行),spring配置文件不同模块要拆分。web配置文件需要将拆分的spring配置文件都写上(拆分成了两个,用applicationContext-*.xml)

2、模块聚合(防止某一模块更新,导致其他模块不能使用。用一个模块管理所有模块,要更新或者其他啥操作,都一起操作。实现快速构建)

创建一个模块,只有pom文件,在pom文件中加

<!--定义该工程用于进行构建管理-->
<packaging>pom</packaging>

<!--管理的工程列表-->
<modules>
    <!--具体的工程名称-->
    <module>../ssm_pojo</module>
    <module>../ssm_dao</module>
    <module>../ssm_service</module>
    <module>../ssm_controller</module>
</modules>

3、模块继承(解决模块依赖出现的问题,比如两个模块依赖的资源版本不同。用一个模块做总控,确定依赖的版本,其他模块只写相应的依赖,不写版本),插件和自己写的模块作为依赖也可以进行管理

下面的就是中间加上所有依赖,来控制版本。

插件:同理

创建一个模块(就是上面的那个,成为父工程,其他模块称为子工程),只有pom文件,在父工程pom文件中加:

<!--声明此处进行依赖管理-->
<dependencyManagement>
    <!--自己的模块作为依赖也可以进行管理,俺就不弄了-->
    <!--具体的依赖-->
    <dependencies>
        <!--mybatis环境-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.3</version>
        </dependency>

        <!--mysql环境-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.47</version>
        </dependency>

        <!--spring整合jdbc-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>5.1.9.RELEASE</version>
        </dependency>

        <!--spring整合mybatis-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>2.0.3</version>
        </dependency>

        <!--druid连接池-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.16</version>
        </dependency>

        <!--分页插件坐标-->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper</artifactId>
            <version>5.1.2</version>
        </dependency>

        <!--springmvc的坐标-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.1.9.RELEASE</version>
        </dependency>

        <!--jackson-->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.9.0</version>
        </dependency>

        <!--servlet4.0.1规范的坐标-->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
            <scope>provided</scope>
        </dependency>

        <!--junit单元测试-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>

        <!--spring整合junit-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>5.1.9.RELEASE</version>
        </dependency>

        <!--spring坐标-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.1.9.RELEASE</version>
        </dependency>
    </dependencies>
</dependencyManagement>


<!--构建-->
<build>
    <!--设置插件-->
    <plugins>
        <!--具体的插件配置-->
        <plugin>
            <groupId>org.apache.tomcat.maven</groupId>
            <artifactId>tomcat7-maven-plugin</artifactId>
            <version>2.1</version>
            <configuration>
                <port>80</port>
                <path>/</path>
            </configuration>
        </plugin>
    </plugins>
</build>

所有的子工程的pom文件都要加

<!--定义该工程的父工程-->
<parent>
    <groupId>com.lcl</groupId>
    <artifactId>ssm</artifactId>
    <version>1.0-SNAPSHOT</version>
    <!--填写父工程的pom文件位置-->
    <relativePath>../ssm/pom.xml</relativePath>
</parent>

然后字工程中的依赖和插件的版本都可以不写了,继承父工程。

还有就是:按理说,子工程的groupId、version应该与父工程一样,可以删除。我这里就不删了

4、属性:为了实现父工程的依赖【版本统一】,相当于定义个变量,值是版本号

属性类别:

(1)自定义属性:

在父工程pom文件中

<!--定义属性-->
<properties>
    <spring.version>5.1.9.RELEASE</spring.version>
    <junit.version>4.12</junit.version>
</properties>
依赖中,使用${属性名}

注意:1、之所以使用spring作为名字,是为了与spring相关的都可以使用这个版本。2、自己模块的依赖的版本号,可以不定义属性进行统一,直接${version}即可,代表着和父工程一样的版本1.0-SNAPSHOT

(2)内置属性:例如上面的${version},是Maven的内置属性,可以快速配置

(3)Setting属性:使用Maven配置文件setting,xml中的标签属性,用于动态配置,例如${setting.属性}

(4)Java系统属性

(5)环境变量属性

(4)、(5)要使用的话,win+r,cmd,键入mvn help:system

5、版本管理

工程版本:

1、SNAPSHOT(快照版本):临时版本,测试阶段版本,随着开发进度不断更新

2、RELEASE(发布版本):稳定的版本

工程版本号约定

约定规范:<主版本>.<次版本>.<增量版本>.<里程碑版本>

主版本:表示项目重大架构的变更,如:spring5相较于spring4的迭代

次版本:表示有较大的功能增加和变化,或者全面系统地修复漏洞

增量版本:表示有重大漏洞的修复

里程碑版本:表明一个版本的里程碑(版本内部)。这样的版本同下一个正式版本相比,相对来说不是很稳定,有待更多的测试。

6、资源配置-资源加载属性值

例如拿JDBC的配置文件中的jdbc.url,可以读取父工程的pom文件的属性值

1)在定义属性那里定义属性值

<jdbc.url>jdbc:mysql://192.168.23.129:3306/ssm_db?useSSL=false</jdbc.url>

2)

还需要在<build></build>中加
         <!--配置资源文件对应的信息-->
        <resources>
            <resource>
                <directory>${project.basedir}/src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
        </resources>

        <!--配置【测试】资源文件对应的信息-->
        <testResources>
            <testResource>
                <directory>${project.basedir}/src/test/resources</directory>
                <filtering>true</filtering>
            </testResource>
        </testResources>
来表示你的资源文件参与这种形式的使用

3)jdbc那个配置文件中也是使用${属性名}

7、环境配置-多环境配置

<!--右上角那个编辑运行,运行install时  -P  加对应的id,如pro_env,就可以指定对应的环境-->
<!--要是嫌弃上面的麻烦,可以设置一个环境默认启动,直接点Lifecycle中的install即可-->
<!--创建多环境-->
<profiles>
    <!--定义具体的环境:生产环境-->
    <profile>
        <!--定义环境的唯一名称-->
        <id>pro_env</id>
        <!--定义环境专用的属性值-->
        <properties>
            <jdbc.url>jdbc:mysql://127.1.1.1:3306/ssm_db?useSSL=false</jdbc.url>
        </properties>
        <!--设置默认启动-->
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
    </profile>
    <!--定义具体的环境:开发环境-->
    <profile>
        <id>dep_env</id>
        <properties>
            <jdbc.url>jdbc:mysql://127.2.2.2:3306/ssm_db?useSSL=false</jdbc.url>
        </properties>
    </profile>
</profiles>

8、跳过测试(了解,实际开发不允许)

方法一:右侧Maven中的Lifecycle有个蓝色圆圈小闪电,点一下,test就会失效

方法二:pom文件处右击Run Maven,键入install -D skipTests(不知道为啥,我没有Run Maven)

方法三:在插件那里加

<!--跳过测试插件的使用-->
<plugin>
    <groupId>org.apache.maven</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.22.1</version>
    <configuration>
        <skipTests>true</skipTests>
    </configuration>
</plugin>

中间可以使用include或exclude来包含或不包含指定的用例测试

9、私服

Nexus:

1)、启动:到到nexus运行文件目录下(我这个在D:\nexus\nexus-3.19.1-01\bin),在上面的路径改成cmd回车进入命令行,键入nexus /run nexus

2)、访问(默认端口号:8081):http://localhost:8081

3)、修改基础配置信息:在etc目录下nexus-default.properties文件中保存有nexus基础配置信息,例如默认端口号

4)、修改服务器运行配置信息:在bin目录下nexus.vmoptions文件保存有nexus服务器启动对应的配置信息,例如默认占用内存空间

仓库分类:

1)宿主仓库hosted:保存无法从中央仓库获取的资源(自主研发,第三方非开源项目)

2)代理仓库proxy:代理远程仓库,通过nexus访问其他公共仓库,例如中央仓库

3)仓库组group:将若干个仓库组成一个群组,简化配置。仓库组不能保存资源,属于设计型仓库。

手动上传看视频吧,挺简单的

idea环境资源的上传与下载,idea和本地仓库打交道,本地仓库和私服打交道,本地仓库和私服之间需要用户名和密码(配置在本地仓库),以及下载(配置到本地仓库)上传(配置到工程中)的位置地址

用户名和密码(配置在本地仓库):maven的setting.xml中

里面

lcl-release

admin

admin

lcl-snapshots

admin

admin

下载(配置到本地仓库):maven的setting.xml中里面

nexus-lcl

*

http://localhost:8081/repository/maven-public/

上传(配置到工程中):父工程的pom文件中加

<!--上传到私服的发布配置管理-->
<distributionManagement>
    <repository>
        <id>lcl-release</id>
        <url>http://localhost:8081/repository/lcl-release/</url>
    </repository>
    <snapshotRepository>
        <id>lcl-snapshots</id>
        <url>http://localhost:8081/repository/lcl-snapshots/</url>
    </snapshotRepository>
</distributionManagement>

点击右侧Maven中的Lifecycle中的deploy

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值