zoukankan      html  css  js  c++  java
  • maven多配目配置总结

    一. 设置一个parent项目,parent项目的作用应该有如下方面:

        1.统一管理jar包的版本,这样许多子项目只需指定依赖的jar,而无需指定所依赖jar的版本

          (1)在<properties>标签内部指定版本常量,例如

                      <properties>

            <spring.webflow.version>2.3.2.RELEASE</spring.webflow.version

                      </properties>

          (2)引用maven本身提供的常量,如project.version,引用方式${project.version},这个方式多用于在一个多项目环境下,各子项目之间定义依赖时使用。

          (3)通过在父项目上的<dependencyManagement>标签为子项目提供一个可选的依赖库,子项目指用其中的jar时无需指定版本

       (4)通过在父项目上的<dependencies>强行为子项目指定一些必要的jar

           (5)  子项目继承父项目时无需指定版本,这样子项目将继承父项目的版本,这样一来结合上述(2)的设置,父项目就可以通过升级自己的版本而带动整个子项目版本的升级,且不会影响子项目之间的依赖。

        2. 在父项目的配置中使用<modules>标签用来聚合管理各个子项目,比如如果想对项目进行打包,就只需在父项目上进行一次mvn install操作,会自动把<modules>标签上指定的全部子项目都执行一次mvn install 。

    二. 使用私服,如安装nexus,但要注意,如果私服的访问不仅仅局限于局域网,则需要进行设置,屏蔽掉anonymous用户的访问。使用私服后,不同的开发人员只需通过版本服务器下自己要开发的项目,其他项目通过maven访问私服获取。

    三. 使用各类maven插件,对项目进行特定的管理,这也是maven的特性,maven本身的架构是一个微内核架构,各类功能主要是靠插件来完成,所以要用好maven,就必须掌握一些常用的插件的使用。

    四. 当多项目中某个jar包升级并发布到了nuexus私服上,如何通知其他项目进行更新,在这里可以利用maven的SNAPSHOT版本机制,,每次更改后,都mvn deploy到nexus中,每次deploy,maven都会将SNAPSHOT改成一个当前时间的timestamp,比如B-1.0-SNAPSHOT.jar到nexus中后,会成为这个样子:B-1.0-20081017-020325-13.jar。Maven在处理A中对于B的SNAPSHOT依赖时,会根据这样的timestamp下载最新的jar,默认Maven每天 更新一次,如果你想让Maven强制更新,可以使用-U参数,如:mvn clean install -U

    五.项目发布私服

        1.修改settings.xml文件

        

    ...
    <servers>
            <server>
                <id>maven-releases</id>
                <username>admin</username>
                <password>admin123</password>
            </server>
            <server>
                <id>maven-snapshots</id>
                <username>admin</username>
                <password>admin123</password>
            </server>
        </servers>
    ...

        2.在顶级父项目中配置pom文件

    //设置发布的服务器
    <distributionManagement>
           <repository>
                <id>maven-snapshots</id>
                <name>Nexus ReleaseRepository</name>
                <url>http://117.50.82.227:8081/repository/maven-snapshots/</url>
            </repository>
      </distributionManagement>
      
    //设置私服仓库,用于项目依赖
    <repositories>
              <repository>
                <id>nexus</id>
                <url>http://117.50.82.227:8081/repository/maven-public/</url>
            </repository>
          </repositories>
    //设置源码打包插件
    <plugin>
            <groupId>org.apache.maven.plugins</groupId>
                      <artifactId>maven-source-plugin</artifactId>
                      <version>3.0.1</version>
                       <executions>
                        <execution>
                            <!-- 绑定source插件到Maven的生命周期 -->
                            <phase>compile</phase>
                            <!--在生命周期后执行绑定的source插件的goals -->
                            <goals>
                                <goal>jar-no-fork</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>

        3.执行命令发布

           mvn deploy -DskipTests=true

        

  • 相关阅读:
    Markdown学习笔记
    Go 学习笔记(一)
    case中定义变量
    <转>MySql 与Oracle区别
    Java 时间转换问题总结
    线程之间共享
    并发编程快速入门
    redis主从复制
    jedis操作redis
    redis持久化方案
  • 原文地址:https://www.cnblogs.com/hzhuxin/p/3981030.html
Copyright © 2011-2022 走看看