簡體   English   中英

由於在jenkins中進行了局部修改,因此Maven Release Plugin中止了准備

[英]Maven Release Plugin aborts prepare because of local modifications in jenkins

問題:

當我執行Maven版本插件的准備目標時,出現錯誤

[錯誤]無法在項目my-artifact-id上執行目標org.apache.maven.plugins:maven-release-plugin:2.3.2:prepare(default-cli):無法准備發布,因為您進行了本地修改:

[錯誤] [我的項目名稱\\ src \\ main \\ java \\ some \\ packages \\ SomeJavaSourceFile.java:modified]

...

[錯誤] [我的項目名稱\\ src \\ main \\ java \\ some \\ packages \\ SomeOtherJavaSourceFile.java:modified]

大約20個文件。

細節

  • 該發布插件是從詹金斯執行的。
  • SVN配置為“總是簽出新副本”
  • Maven發布插件用於目標-Dresume=false clean release:prepare release:perform
  • 修改的文件在最后一次提交中被修改。
  • 執行准備目標期間發生錯誤:

    [INFO] --- maven-release-plugin:2.3.2:prepare(default-cli)@ artifact-id

  • 發行插件在過去的11次中成功運行了(但有時在第一次嘗試中不起作用,但是在第二次嘗試中)

類似問題

為什么其他問題無濟於事:

日志

我嘗試將其匿名化,因此您發現某些部分已替換為[replaced part的含義]

Started by user Sergej Werfel
[EnvInject] - Loading node environment variables.
Building remotely on Build in workspace E:\Jenkins\Build\workspace\project-dir
Cleaning local Directory .
Checking out [svn-url] at revision '2016-09-09T10:12:55.444 +0200'
...
A         some file
...
AU        some other file
AU        pom.xml
AU        event more files
...
 U        .
At revision 1639745
no change for [svn-url] since the previous build
Injecting SonarQube environment variables using the configuration: Sonar 5
Parsing POMs
Injecting SonarQube environment variables using the configuration: Sonar 5
using global settings config with name MVN Settings [setting name]
Replacing all maven server entries not found in credentials list is true
Injecting SonarQube environment variables using the configuration: Sonar 5
Injecting SonarQube environment variables using the configuration: Sonar 5
Injecting SonarQube environment variables using the configuration: Sonar 5
Injecting SonarQube environment variables using the configuration: Sonar 5
Injecting SonarQube environment variables using the configuration: Sonar 5
Injecting SonarQube environment variables using the configuration: Sonar 5
Injecting SonarQube environment variables using the configuration: Sonar 5
Established TCP socket on 18423
maven32-agent.jar already up to date
maven32-interceptor.jar already up to date
maven3-interceptor-commons.jar already up to date
[project name] $ "C:\Program Files\Java\jdk1.8.0_51/bin/java" -cp E:\Jenkins\Build\maven32-agent.jar;C:\apache-maven-3.3.9\boot\plexus-classworlds-2.5.2.jar;C:\apache-maven-3.3.9/conf/logging jenkins.maven3.agent.Maven32Main C:\apache-maven-3.3.9 E:\Jenkins\Build\slave.jar E:\Jenkins\Build\maven32-interceptor.jar E:\Jenkins\Build\maven3-interceptor-commons.jar 18423
<===[JENKINS REMOTING CAPACITY]===>channel started
using global settings config with name MVN Settings [setting name]
Replacing all maven server entries not found in credentials list is true
Executing Maven:  -B -f [path to root pom]\pom.xml -gs [path to settings]\global-settings1467677761792043752.xml -DdevelopmentVersion=0.1.13-SNAPSHOT -DreleaseVersion=0.1.12 -Dresume=false -DdryRun=true clean release:prepare
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Build Order:
[INFO] 
[INFO] [project name]
[INFO] module-1
[INFO] module-2
[INFO] module-3
[INFO] module-4
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building root project name 0.1.12-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ root-project ---
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building module-1 0.1.12-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ module-1 ---
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building module-2 0.1.12-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ module-2 ---
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building module-3 0.1.12-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ module-3 ---
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building module-4 0.1.12-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ module-4 ---
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building project name 0.1.12-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-release-plugin:2.3.2:prepare (default-cli) @ root-project ---
[INFO] Verifying that there are no local modifications...
[INFO]   ignoring changes on: **\pom.xml.next, **\release.properties, **\pom.xml.branch, **\pom.xml.tag, **\pom.xml.backup, **\pom.xml.releaseBackup
[INFO] Executing: cmd.exe /X /C "svn --non-interactive status"
[INFO] Working directory: E:\Jenkins\Build\workspace\project-dir
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO] 
[INFO] root-project ................................ FAILURE [  1.016 s]
[INFO] module-1 .......................... SUCCESS [  0.047 s]
[INFO] module-2 ............................ SUCCESS [  0.049 s]
[INFO] module-3 ....................... SUCCESS [  0.084 s]
[INFO] module-4 ........................ SUCCESS [  0.068 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 4.089 s
[INFO] Finished at: 2016-09-09T10:13:08+02:00
[INFO] Final Memory: 15M/234M
[INFO] ------------------------------------------------------------------------
Waiting for Jenkins to finish collecting data
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-release-plugin:2.3.2:prepare (default-cli) on project root-project: Cannot prepare the release because you have local modifications :
[ERROR] [module-1\src\test\java\package\SomeJavaTest.java:modified]
[ERROR] [... some other files ...]
[ERROR] [module-2\src\main\java\package\SomeJavaFile.java:modified]
[ERROR] [... some other files ...]
[ERROR] [module-2\src\test\java\package\AnOtherTestTest.java:modified]
[ERROR] -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
[JENKINS] Archiving E:\Jenkins\Build\workspace\project-dir\module-1\pom.xml to [some path]/0.1.12-SNAPSHOT/module-1-0.1.12-SNAPSHOT.pom
[other modules]
[M2Release] its only a dryRun, no need to mark it for keep
channel stopped
Warning: you have no plugins providing access control for builds, so falling back to legacy behavior of permitting any downstream builds to be triggered
Finished: FAILURE

項目結構

- root-dir
|- module-1-dir
|'- module-1-pom
|- module-2-dir
|'- module-1-pom
| ...
'-root-pom

概觀

提交的文件只有\\n (= lf = line feed )作為以Subversion結尾的行。 它們是在Windows機器上檢出的,因此結尾變成\\r\\n (= crlf = carriage return and line feed )。 因此,文件已更改為“已修改”。 要解決該問題,請直接使用\\r\\n -end檢入該文件。

找到方式

  • 在Jenkins上進行新的簽出后,您可以以skript的身份運行“ svn status”,以證明文件被標記為“已修改”。
  • 當您調用“ svn diff”時,您會看到每個文件的每一行都不同,但是您看不到任何差異=>不可見的更改
  • 從jenkins工作區中打開一個這樣的修改文件,然后從svn repo中打開一個文件,然后使用可以可視化不可見字符的編輯器對其進行查看(例如,Notepad ++具有工具欄上的“顯示所有字符”)

原因

發生這種情況的原因是git-svn的錯誤使用。 我使用git-svn檢出了這些文件,而未更改“ autocrlf”設置。 提交本地倉庫時,Git將結尾更改為\\n 按下svn時,行尾仍為\\n

固定

  • 使用svn客戶簽出,更改行尾,提交。
  • 或在git中將“ autocrlf”設置為false 使用git-svn簽出,更改行尾,dcommit。

未來如何避免

Git的設置為“ autocrlf”。 轉過來似乎可以解決問題

經過以下步驟解決了

  1. scm標簽(連接,developerconnection和url)和發布插件從父pom移到了子pom。
  2. maven命令中使用的-B選項示例: mvn -B -f pom.xml -DdevelopmentVersion=<developmentVersion> -DreleaseVersion=<releaseVersion> -Dusername=<scmUserName> -Dtag=<releaseVersion> -Dresume=false release:prepare release:perform versions:use-latest-releases -Dpassword=<scmPassword>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM