web-dev-qa-db-ja.com

Mavenリリースプラグインを無効にする方法は、ローカルの変更を確認しますか?

Mavenリリースプラグインを使用しています。私のpomには、追加情報でいくつかのプロパティファイルを自動的に修正するAntタスクが存在します。この修正はSCMには含まれないはずです。しかし、Mavenはエラーのために成功して終了しません:

Cannot prepare the release because you have local modifications 

ローカルの変更をチェックしないようにいくつかのパラメーターを設定することは可能ですか?

ありがとう。

16
user710818

私はmaven-release-pluginにあまり詳しくありませんが、目的に使用できるcheckModificationExcludesプロパティがあることがわかります。構成は次のようになります。

<plugin>
  <groupId>org.Apache.maven.plugins</groupId>
  <artifactId>maven-release-plugin</artifactId>
  <version>2.2.2</version>
  <configuration>
    ...
    <checkModificationExcludes>
      <checkModificationExclude>file_1</checkModificationExclude>
      <checkModificationExclude>dir_1/file_2</checkModificationExclude>
    </checkModificationExcludes>
  </configuration>
</plugin>
32
Andrew Logvinov

Jenkinsからリリースを実行しようとしましたが、常に同じメッセージで失敗しました...

Cannot prepare the release because you have local modifications 

...これは奇妙なことでした。リリースする前にjenkinsを使用して最新のソースをチェックアウトしてビルドしているからです。

最終的に、問題はWindowsノード上に構築していて、一部のファイルパスが長すぎて、maven-release-pluginがローカルの変更について文句を言う原因であることがわかりました。 Linuxノードに切り替えると、この問題は解決しました。

4
user1867477

プロジェクトのtargetフォルダーをソース管理から削除すると、この問題が修正されました。

2
Adil Hussain

@AndrewLogvinovの答えは途中です。 残りの半分はこれで言及されています

Org.Apache.maven.shared.release.phase.ScmCheckModificationsPhase.execute()での比較により、パスが削除され、ファイル名のみが比較されることがわかりました。そこで、$ {thewholepath}/applicationsプロパティではなくapplication.propertiesを無視するようにpomを変更しました。見よ、成功。

奇妙な理由で、このタグにパスを含めることはできません。指定できるのはファイル名のみです。

1
Daniel Kaplan

SCMの下にあるファイルを「修正」しないように、ビルドプロセスを修正することをお勧めします。これを行うにはいくつかの方法があります。最も簡単な方法は、問題のプロパティファイルを${project.build.outputDirectory}の下のディレクトリにコピーし、元のファイルではなく、これらのファイルに対してAntスクリプトを実行することです。

私の場合、ジョブ名の名前を短い長さ(約20文字)に変更することで、Windowsで機能しました。

私の場合、Jenkinsのジョブ名とsvnブランチ名が長くなりました(約40文字)。一部のファイルパスが長すぎると、maven-release-pluginがローカルの変更について文句を言います。 Jenkinはジョブ名でローカルワークスペースを作成します

例えば以下のように、リリース中のJenkinsジョブは、ローカルの変更について不平を言い始めます。

D:\dev.env\data\jenkins\jobs\<LongerJobName>\workspace\<LongerBranchName>\testCommonJar\src\main\Java\com.example.webservice.service.TestServiceImpl.Java
0
Sharad Gaikwad