2013-08-28 30 views
5

versionIdをPOMに指定し、それに応じてmavenはfoo-version.jarを生成します。例:foo-1.0-SNAPSHOT.jar。mavenビルド - バージョン情報

mavenで次のことを行うことはできますか?

  • POMにversionIdを指定せず、コマンドラインからビルドバージョンを指定してください。これは、POMのバージョンを "ハードコード"するのではなく、リリースごとにバージョンを変更するのに役立ちますが、スーパービルドスクリプトで指定します。プレースホルダ

    <groupId>test</groupId> 
    <artifactId>x</artifactId> 
    <version>${project.version}</version> 
    

    としてポンポンで

+2

リリースの変更は、リリースプラグインではなく、手動で実行する必要があります。 – khmarbaise

+0

特定のバイナリバージョンのソフトウェアをお持ちの場合、ビルドに使用されたソースのバージョンはどのように分かりますか? – artbristol

答えて

5

設定プロジェクトのバージョンは今、あなたは

mvn -Dproject.version=1.1.1 package 
+0

私はMaven 2の古い時代に、このアプローチがうまくいかないことを試しました。結果として生じるPOMは使用不能に生成される。 (私はこれが今改善されたことを望む)。これがPOMのバージョン変更を行うための少しのスクリプトを書く必要がある理由です –

+0

これはうまくいきましたが、生成/インストールされたPOMにも ' $ {project.version}'があります。依存モジュールがこのモジュールを使用する上で、これは問題ではありませんか?望ましくは、生成されたPOMは、モジュールが構築されている実際のバージョンを持つ必要があります。 – gammay

4

あなたはmaven release pluginを使用することができ、コマンドラインからのバージョンを渡すことができます。

release:update-versions -DautoVersionSubmodules=true

あなたは、各モジュールの同じバージョンをしたい場合、あなたはautoVersionSubmodulesを必要としています。それ以外の場合は、それぞれのバージョンを指定する必要があります。

これは、あなたが特定のバージョン-DdevelopmentVersion=your version UPDATE

あなたのコマンドを追加したい場合は、私はトリックを行う別のプラグインを見つけ、あなたの現在のバージョンをインクリメントします。あなたはバージョンを設定することができ、このコマンドで
<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>versions-maven-plugin</artifactId> 
    <version>2.1</version> 
</plugin> 

The maven versions pluginversions:set -DnewVersion=your version

+0

最初のオプションを試したとき、私はこのエラーを受け取りました: '[ERROR] goal org.apache.maven.plugins:maven-release-plugin:2.3.2:update-versions(default-cli)をプロジェクトシンプルに実行できませんでした:必要な設定がありません:scm connectionまたはdeveloperConnectionを指定する必要があります。 - > [ヘルプ1] '。 2番目のオプションはビルド後のバージョン*を更新しました!いずれにしても、POMがCMにチェックインされ、各ビルドのためにファイルをコミットしたくないので、POMのバージョンをPOMから外すことが考えられます。 – gammay

+0

あなたのpomにscmタグを追加する必要があります。[here's](http://maven.apache.org/scm/maven-scm-plugin/usage.html)その使用例 – mokuril

関連する問題