Maven发布过程

时间:2016-09-24 14:19:56

标签: maven maven-release-plugin

我遇到了Maven发布过程的问题。我已经创建了我的进程的编译阶段,你可以编译相同的版本或更高的版本,但是编译一个以前的版本会出错。 (这是必需的,因为在编译阶段将对象推入数据库,我不希望这些对象回归到以前的版本。)

我有一个项目,在pom文件中指定它是版本0.0.1-SNAPSHOT

我运行maven release:准备,使用所有默认设置,它工作正常,给我一个新的pom文件版本0.0.2-SNAPSHOT

然后我运行maven release:perform,在这个阶段它遇到了问题。 它似乎已编译版本0.0.1后编译版本0.0.1-SNAPSHOT。由于0.0.1-SNAPSHOT在0.0.1之前出现,我得到一个错误。

我的问题是为什么发布插件在编译0.0.1之后编译0.0.1-SNAPSHOT。此时pom.xml还有版本0.0.2-SNAPSHOT。

任何人都可以解释/指出显示此过程的文档,如果可能的话,告诉我如何防止这种行为。

2 个答案:

答案 0 :(得分:0)

我今天早上仔细地重新运行了这个过程,它现在正在运行,没有任何错误。我不明白出了什么问题。

我的流程是: 初始:

pom version: 0.0.1-SNAPSHOT (Same on gitlab and local clone)
tags: none
Latest Deployed to DB: Nothing deployed in DB

运行:mvn deploy命令

pom version: 0.0.1-SNAPSHOT (Same on gitlab and local clone)
tags: none
Latest Deployed to DB: 0.0.1-SNAPSHOT

运行:mvn release:prepare

Input: release version - 0.0.1 (default accepted)
Input: SCM release tag or label - ICSchema_SAMPLE_UTIL_SCHEMA-0.0.1 (default accepted)
Input: New development version - 0.0.2-SNAPSHOT (default accepted)
pom version: 0.0.2-SNAPSHOT (gitlab still shows 0.0.1-SNAPSHOT)
tags: ICSchema_SAMPLE_UTIL_SCHEMA-0.0.1 (gitlab also shows this tag)
Latest Deployed to DB: 0.0.1-SNAPSHOT

已创建发布属性文件:

#release configuration
#Mon Sep 26 10:54:07 BST 2016
project.dev.metcarob.com.oracledb.sample.schema\:ICSchema_SAMPLE_UTIL_SCHEMA=0.0.2-SNAPSHOT
scm.tagNameFormat=@{project.artifactId}-@{project.version}
scm.tag=ICSchema_SAMPLE_UTIL_SCHEMA-0.0.1
project.scm.metcarob.com.oracledb.sample.schema\:ICSchema_SAMPLE_UTIL_SCHEMA.connection=scm\:git\:ssh\://git@gitlab.com/rmetcalf9/ICSchema_SAMPLE_UTIL_SCHEMA.git
pushChanges=true
scm.url=scm\:git\:ssh\://git@gitlab.com/rmetcalf9/ICSchema_SAMPLE_UTIL_SCHEMA.git
preparationGoals=clean verify
project.rel.metcarob.com.oracledb.sample.schema\:ICSchema_SAMPLE_UTIL_SCHEMA=0.0.1
remoteTagging=true
scm.commentPrefix=[maven-release-plugin] 
project.scm.metcarob.com.oracledb.sample.schema\:ICSchema_SAMPLE_UTIL_SCHEMA.tag=HEAD
project.scm.metcarob.com.oracledb.sample.schema\:ICSchema_SAMPLE_UTIL_SCHEMA.url=ssh\://git@gitlab.com\:rmetcalf9/ICSchema_SAMPLE_UTIL_SCHEMA.git
exec.additionalArguments=-Dcmd.env\=dev -Dcmd.parent.sys\=soa
exec.snapshotReleasePluginAllowed=false
completedPhase=end-release

运行:mvn release:perform

Worked successfully this time!!!!
pom version: 0.0.1-SNAPSHOT
tags: ICSchema_SAMPLE_UTIL_SCHEMA-0.0.1 (gitlab also shows this tag)
Latest Deployed to DB: 0.0.1-SNAPSHOT*

*我已经意识到我的最新部署到数据库字段是误导的,因为我的进程只会部署到数据库,如果PLSQL脚本的哈希值已经为每个对象更改,所以尽管它仍然显示0.0.1-SNAPSHOT它仍然意味着可能已部署版本0.0.1和0.0.2-SNAPSHOT。

不清除数据库可能是我的问题的原因。

答案 1 :(得分:0)

(我的第一个回答是错误的)

我的实验表明,release插件确实以奇怪的顺序进行部署,版本0.0.1-SNAPSHOT确实在0.0.1之后部署了

由于我的部署过程需要正确的顺序,因此失败。 我有一个解决方法,因为我的流程不会进行部署,除非我做了任何更改,如果我进行了部署" mvn deploy"在我开始发布过程之前,发布过程在部署" 0.0.1"时不会进行任何更改。我可以解决这个问题。