maven之SCM(Software Configuration Managemen),maven-release-plugin,distributionManagement与pluginRepositories插件

简介:

一. 简介

 在项目开发过程中,通常开发阶段会包含以下几个步骤:

 1. 将所有的代码提交到版本管理库(SVN,GIT)或者是打上对应的标签。

 2. 从SVN下载源码

 3. 构建应用

 4. 存储构建输出war,ear或者jar包到网络上指定位置。

 5. 从网络上获取对应的包信息。

 6. 及时更新文档以及更新版本号,

 基于上述步骤:一般需要一个版本管理库(SVN,CVS,GIT);仓库构建和发布(maven), 仓库管理软件(nexus)。其中maven通过SCM插件对其进行版本管理软件进行构建操作。通过distributionManagement发布到对应的网络目录下。

二 SCM插件

SCM主要用于从版本管理库中获取对应的最新版本信息,其主要包括两个链接:
 1. developerConnection:用于指定开发者的链接。
 2. connection:用于发布的链接
 其主要配置格式如下:
scm:svn:http://somerepository.com/svn_repo/trunk
<service name>:<scm implementation>:<repository url>
完整例子:
<project>
  ...
  <packaging>jar</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>SCM Sample Project</name>
  <url>http://somecompany.com</url>
  <scm>
    <connection>scm:svn:http://somerepository.com/svn_repo/trunk</connection>
    <developerConnection>scm:svn:https://somerepository.com/svn_repo/trunk</developerConnection>
    <url>http://somerepository.com/view.cvs</url>
  </scm>
  ...
</project>
通过配置如下脚本,使其更改生效
mvn scm:checkin -Dmessage="code log" #code commit
mvn scm:update #update code
通过mvn的操作将代码进行了同步更新操作。接下来我们需要将上述代码打包发布出去,该maven-release-plugin登场!
三 maven-release-plugin
 该插件的主要功能是通过mavn自动发布项目,减少人工干预。它依赖于POM的SCM信息。其主要包括的阶段1. 准备阶段;2执行阶段;3.回滚,4清楚。
其主要配置信息如下:
  <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-release-plugin</artifactId>
        <version>x.x.x</version>
        <configuration>
          <username>***</username>
          <password>***</password>
        <tagBase>${svn_url}/tags</tagBase>
          <releaseProfiles>release</releaseProfiles>
       </configuration>
      </plugin>
其执行命令顺序如下:

 mvn release:prepare
Maven会进入交互模式,询问需要发布release的版本(默认是将当前版本的“-SNAPSHOT去掉”);然后询问发布后snapshot版本的版本号(默认当前版本增加一位小版本号);直接回车即可确认。
然后插件开始工作,主要进行的操作有:
A) 替换父工程和子模块的pom.xml中的version字段为1.0.5;然后在本地git仓库当前分支Commit一个版本
B) 在本地git仓库,创建一个tag,默认命名为XXX-1.0.5
C) 再将父工程和子模块的pom.xml中的version字段替换成1.0.6-SNAPSHOT;然后本地git仓库当前分支再Commit一个版本
D) 将以上本地版本push到git remote仓库

mvn release:perform 主要进行的操作是将第一步生成的tag clone到本地,然后对其进行build和deploy操作,完成之后能看到maven release仓库中已经有了对应的版本
mvn release:clean  这一步将上述过程中生成的临时文件删除
创建分支参考: http://maven.apache.org/maven-release/maven-release-plugin/examples/branch.html
(如果发布snapshot,只需要执行 mvn clean deploy即可
当上述稳定版本发布之后,如何快速的将其加入到对应的maven仓库(nexus)中,需要该轮到distributionManagement了。
四. distributionManagement
 maven仓库分为两种:快照仓库(snapshot reposity)与发布仓库(release reposity).快照仓库用于保存项目的不稳定版本。发布仓库既保存稳定版本。一般发布版本需要在版本号后加入-SNAPSHOT(要大写)。其详细列子如下:
 <distributionManagement>
    <repository>
        <id>oss</id>
        <url>http://127.0.0.1:8081/repository/maven-releases/</url>
    </repository>
    <snapshotRepository>
        <id>oss</id>
        <url>http://127.0.0.1:8081/repository/maven-snapshots/</url>
    </snapshotRepository>
  </distributionManagement>
其中上面的id对应%M2_HOME%\conf\settings.xml的<service>节点,配置如下:
<servers>
    ...
    <server>
        <id>oss</id>
        <username>admin</username>
        <password>admin123</password>
    </server>
    ...
</servers>
通过运行以下命令进行发布
mvn release:clean release:prepare release:perform

四 pluginRepositories

pluginrepositories:主要是maven用来解决插件依赖。这个需要在setting.xml火灾在pom中配置。 
  repository  :其他的手工依赖需要依靠需要使用reposity(例如 parant pom.xml)等。
其代码如下
<profile>
	 
            <id>default</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
			
            <repositories>
                <repository>
                    <id>nexus-server@public</id>
                    <url>${url}/content/repositories/releases</url>
                    <snapshots>
                        <enabled>true</enabled>
                    </snapshots>
                </repository>
                <repository>
                    <id>nexus-server@public-snapshots</id>
                    <url>${url}/repositories/snapshots</url>
                    <snapshots>
                        <enabled>true</enabled>
                    </snapshots>
                </repository>
            </repositories>
			
	 
            <pluginRepositories>
                <pluginRepository>
                    <id>nexus-server@public</id>
                    <url>${url}/repositories/releases</url>
                    <snapshots>
                        <enabled>false</enabled>
                        <updatePolicy>never</updatePolicy>
                    </snapshots>
                </pluginRepository>
            </pluginRepositories> 
		 
        </profile>



                        http://maven.apache.org/




 
目录
相关文章
|
6月前
|
Java 应用服务中间件 Apache
Maven程序 tomcat插件安装与web工程启动
Maven程序 tomcat插件安装与web工程启动
62 0
|
5月前
|
XML Java Maven
maven总结三: 常用插件
maven总结三: 常用插件
51 3
|
2月前
|
Java 编译器 测试技术
全面理解Maven Compiler Plugin-Maven编译插件
【10月更文挑战第16天】
264 1
|
5月前
|
Java 测试技术 Maven
Maven 插件
Maven包含clean、default(build)、site三大生命周期,分别处理项目清理、部署和文档创建。每个生命周期由多个阶段组成,充当标准化接口,实际工作由插件执行。例如,`mvn clean`调用的是clean生命周期的clean阶段,其实现由maven-clean-plugin插件完成。Maven是一个依赖插件的框架,插件负责任务如生成jar/war、编译、测试、文档和报告。通过`mvn plugin-name:goal-name`命令执行插件目标。
|
4月前
|
Java Maven Spring
Maven重打包问题之maven-shade-plugin插件对于重复的class文件会如何处理
Maven重打包问题之maven-shade-plugin插件对于重复的class文件会如何处理
|
4月前
|
Java jenkins 持续交付
jenkins学习笔记之十七:使用插件及maven上传制品到nexus
jenkins学习笔记之十七:使用插件及maven上传制品到nexus
|
5月前
|
Java Maven
idea安装并使用maven依赖分析插件:Maven Helper
idea安装并使用maven依赖分析插件:Maven Helper
2624 7
|
5月前
|
数据可视化 Java 程序员
IDEA插件-Maven Helper
Maven Helper是一个用于Apache Maven项目的IntelliJ IDEA插件,它提供了一些有用的功能来帮助开发人员更好地管理和调试Maven项目。
710 0
IDEA插件-Maven Helper
|
4月前
|
Java Maven 开发者
"揭秘IDEA的神奇助手:Maven Helper插件,让你轻松驾驭复杂依赖,告别冲突噩梦!"
【8月更文挑战第20天】Maven Helper是一款提升Java开发者工作效率的IDEA插件,它能直观展示项目依赖关系并协助管理。主要功能包括依赖树视图、冲突检测与解决及依赖排除。安装简便,重启IDEA后即用。借助其“Dependencies”面板,开发者可以清晰了解依赖详情,快速定位并解决冲突问题,有效优化项目结构,提升开发效率。
254 0
|
5月前
|
Java 测试技术 Maven
Maven 插件
Maven包含clean、default/build、site三个生命周期,用于清理、构建和文档创建。每个生命周期由多个阶段构成,作为标准化步骤。比如`mvn clean`调用Clean生命周期的clean阶段,其实体实现是maven-clean-plugin。Maven依赖插件执行任务,如生成jar/war、编译、测试、文档等。插件通过`mvn plugin-name:goal-name`形式执行特定目标。