... 플러그인을 만드는 방법이있는 경우 보조 버전이 아닌 이 증가합니다.
현재 버전 1.1.0- 스냅 샷에있을 때 다음 버전은 에서 1.1.1- 스냅 샷으로 설정되지만 이상적으로는 1.2.0- 스냅 샷으로 변경하고 싶습니다.
여기서 설명하는 것은 maven-release-plugin이 수정 버전을 증가시키고 보조 버전을 증가시키기를 원한다는 것입니다. 버전 x.y.z
은 [majorVersion].[minorVersion].[fixVersion]
을 의미합니다.
내가 이것을 해결하는 방법은 다음과 같이이다 :
- 당신이 설명하는 방식으로 귀하의
pom.xml
증가 그것에서 버전을 선택합니다 그루비 스크립트를 만들고 허드슨 문자열로 developmentVersion
및 releaseVersion
을 설정 매개 변수.
- 은 작업의 작업 공간 작업에
- 에서 허드슨에
- 놓습니다 그루비 스크립트 작업을 만들기 설정 "시스템 그루비 스크립트를 실행"단계를 구축 - 작업 세트에 그루비 스크립트
- 에 대한 경로를 제공 "Invoke top-level Maven targets"빌드 단계와
developmentVersion
및 releaseVersion
속성을 가진 maven release 명령을 호출하십시오.
1 단계 :
import hudson.model.*
createReleaseAndDevelopmentVersions();
def createReleaseAndDevelopmentVersions() {
def POM_LOCATION = build.parent.builds[0].properties.get("envVars")['WORKSPACE'] + "/pom.xml";
def SNAPSHOT_PART = "-SNAPSHOT";
def projectVersion = findOutCurrentVersion(POM_LOCATION);
def versionParts = projectVersion.tokenize('.');
def mayorVersionPart = versionParts[0];
def minorVersionPart = versionParts[1];
def fixVersionPart = versionParts[2];
def snapshotPartIndex = fixVersionPart.indexOf(SNAPSHOT_PART);
boolean hasSnapshotPart = snapshotPartIndex != -1;
if (hasSnapshotPart) {
fixVersionPart = fixVersionPart.substring(0, snapshotPartIndex);
}
int minorVersion = minorVersionPart.toInteger();
int fixVersion = fixVersionPart.toInteger();
def newFixVersion = 0;
def newMinorRelVersion;
def newMinorDevVersion;
if (hasSnapshotPart) {
newMinorRelVersion = minorVersion;
newMinorDevVersion = minorVersion + 1;
} else {
//TODO: either throw an exception here or change the newMinorRelVersion newMinorDevVersion appropriately to suite your use-cases:
//throw new IllegalArgumentException("The pom at location " + POM_LOCATION + " contains the version " + projectVersion + " which is not a snapshot version (missing " + SNAPSHOT_PART + "). This is a released version and nothing should happen to it!");
}
def releaseVersion = mayorVersionPart + "." + newMinorRelVersion + "." + newFixVersion;
def developmentVersion = mayorVersionPart + "." + newMinorDevVersion + "." + newFixVersion + SNAPSHOT_PART;
createJenkinsVariablesAndAddToCurrentJob(releaseVersion, developmentVersion);
}
def findOutCurrentVersion (POM_LOCATION) {
def thr = Thread.currentThread()
def build = thr?.executable
def projectVersionParam = "projectVersion"
def resolver = build.buildVariableResolver
def projectVersionParamValue = resolver.resolve(projectVersionParam)
return projectVersionParamValue
}
def createJenkinsVariablesAndAddToCurrentJob (releaseVersion, developmentVersion) {
def pa = new ParametersAction([
new StringParameterValue("releaseVersion", releaseVersion), new StringParameterValue("developmentVersion", developmentVersion)
])
Thread.currentThread().executable.addAction(pa)
}
5 단계 (받는다는 명령) :
clean release:clean release:prepare release:perform -DreleaseVersion=${releaseVersion} -DdevelopmentVersion=${developmentVersion}
건배, 답변에 대한
군주
감사 자크. 버전을 묻는 메시지를 표시하고 싶지는 않지만 releaseVersion 및 developmentVersion을 매번 변경해야 할 필요는 없습니다. 나는 버전을 자동으로 증가시키는 방법이 있는지보고 싶다. -DautoVesrionSubmodules를 사용하면 부 버전이 증가하지만 주 버전을 늘려야합니다. 나는 1.1.0에서 1.2.0로 가고 싶다. – Arya
@Arya 실제로'-DautoVersionSubmodules'는 자동으로 버전을 선택하지 않는다. 지정된 버전이 모든 모듈에 적용되는지 확인합니다 (그렇지 않으면 각각에 대해 프롬프트가 표시됩니다). 나는 "무언가가 당신을 위해 선택합니다"라고 반복합니다. 그것이 maven 인 경우, 릴리스 플러그인이라고 생각하지 않습니다. 허드슨 구성에 무언가가 존재한다고 생각합니다. –