首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件开发 >

第10三章 版本管理

2013-11-09 
第十三章 版本管理主版本.次版本.增量版本-里程碑版本Maven对前三者的比较是基于数字的,对里程碑

第十三章 版本管理

<主版本>.<次版本>.<增量版本>-<里程碑版本>

Maven对前三者的比较是基于数字的,对里程碑版本只进行简单的字符串比较。

1)主干(trunk):项目开发代码的主体,从项目开始直到当前都处于活动状态,可以获得项目最新源码及所有变更历史。

2)分支(branch):从主干的某个点分离出来的代码拷贝,通常是为了在不影响主干的前提下进行重大Bug的修复或做些实验性质的开发,当分支达到预期的目的后,分支上的变更会被合并到主干上。如下图中为了不影响1.2.0的开发,从1.1.0分了一个分支出来进行Bug修复。

3)标签(tag):用来标识主干或者分支的某个点的状态,以某个稳定状态(通常是版本发布时的状态)


第10三章 版本管理

POM中的SCM信息会不会再变到非标签地址?(新的快照版本的scm地址)还是需要手动自己更新?

<scm> <connection>scm:svn:http://192.168.1.103/app/trunk</connection> <developerConnection>scm:svn:https://192.168.1.103/app/trunk</developerConnection> <url>http://192.168.1.103/account/trunk</url ></scm> ?

connection元素表示只读的scm地址,developerConnection元素表示可写的scm地址,两者必须以scm开头,冒号之后表示版本控制工具的类型,接下来才是实际scm地址。url则表示可在浏览器中访问的scm地址。

<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-release-plugin</artifactId> <version>2.0</version> <configuration> <tagBase>https://192.168.1.103/app/tags/</tagBase> </configuration></plugin>?

执行mvn release:prepare,如果项目有未提交的代码或者有快照版本依赖,则会提示出错。如果一切正确,则会提示用户输入发布版本号、标签名以及新的快照版本号(SVC命令行工具需要自己安装)。标签地址为<tagBase>中的地址加上新的标签名。(https://192.168.1.103/app/tags/app-1.0.0)

?

<profiles><!-- NOTE: The release profile will be removed from future versions of the super POM --> <profile> <id>release-profile</id> <activation> <property> <name>performRelease</name> <value>true</value> </property> </activation> <build> <plugins> <plugin> <inherited>true</inherite> <artifactId>maven-source-plugin</artifactId> <executions> <execution> <id>attach-sources</id> <goals> <goal>jar</goal> </goals> </execution> </executions> </plugin> <plugin> <inherited>true</inherited> <artifactId>maven-javadoc-plugin</artifactId> <executions> <execution> <id>attach-javadocs</id> <goals> <goal>jar</goal> </goals> </execution> </executions> </plugin> <plugin> <inherited>true</inherited> <artifactId>maven-deploy-plugin</artifactId> <configuration> <updateReleaseInfo>true</updateReleaseInfo> </configuration> </plugin> </plugins> </build> </profile></profiles> ?

这个profiler配置了三个插件,分别用来为项目生成-source.jar,为项目生成-javadoc.jar以及更新仓库中的元数据,告诉仓库该版本是最新的发布版。每个插件中值为true的interited元素表示该插件配置可以被子POM继承。而这个profile的激活条件是运行环境中有名为performRelease属性且值为true。而release:perform会自动生成-DperformRelease=true参数。由于这种隐式的配置十分令人费解,会在后面版本的Maven中去除,让用户自己在POM中显示配置这些插件。

为此我们还需要在POM中配置为MavenRelease Plugin用<branchBase>元素配置分支地址。

执行 release:branch –DbranchName=1.1.1–DupdateBranchVersions=true –DupdateWorkingCopyVersions=false 会提示用户输入新的branchversion。

最后一个参数表示不更新本地代码(即主干)版本。

gpg –keyserver hkp://pgp.mit.edu –send-keys C6EED57A

这里C6EED57A就是用—list-keys看到的公钥ID。公钥会自动在各个服务器中被同步。

gpg –keyserver hkp://pgp.mit.edu –recv-keys C6EED57A

<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-gpg-plugin</artifactId> <version>1.0</version> <executions> <execution> <id>sign-artifacts</id> <phase>verify</phase> <goals> <goal>sign</goal> <goals> </execution> </executions></plugin> ?

用命令行mvn clean deploy –Dgpg.passphrase=yourpassphrasesk可以对你发布的构件进行自动签名。Yourpassphrase是你的私钥的密码(你在创建私钥的时候可以选择是否设一个密码。)

mvn gpg:sign-add-deploy-file –DpomFile=target/myapp-1.0.pom–Dfile=target/myapp-1.0.jar –Durl=http://oss.sonatype.org/service/local/staging/deploy/maven2/-DrepositoryId=sonatype_oss

该命令指定了要签名的POM及相关文件、Maven仓库的地址和ID。

<mavenExecutorId>forked-path</mavenExecutorId>?

?

热点排行