我遇到了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。
任何人都可以解释/指出显示此过程的文档,如果可能的话,告诉我如何防止这种行为。
答案 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"时不会进行任何更改。我可以解决这个问题。