添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
成熟的荔枝  ·  mysql · PyPI·  1 月前    · 
痛苦的领带  ·  威海市博物馆·  1 月前    · 

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

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>
    <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>
</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>
【高效编码】IDEA中这些插件必知必会!!(Maven Helper等等)
您好,我是码农飞哥,感谢您阅读本文!如果此文对您有所帮助,请毫不犹豫的一键三连吧。上一篇文章介绍了Listary工具。这一篇文章我将继续介绍一些好用的插件工具,这里主要介绍在Idea中的一些五星好评的实用插件。闲话少述,让我们直入主题。
【Maven实战技巧】「插件使用专题」Maven-Archetype插件创建自定义maven项目骨架
【Maven实战技巧】「插件使用专题」Maven-Archetype插件创建自定义maven项目骨架
【CI/CD技术专题】「Docker实战系列」使用Maven插件构建Docker镜像的方法
【CI/CD技术专题】「Docker实战系列」使用Maven插件构建Docker镜像的方法