2011-07-17 11 views
28

私はgitをSCMとして使用するマルチモジュールのmavenプロジェクトをリリースしようとしています。最初に遭遇した問題は、mavenリリースのプラグインのビルド方法ですrelease.properties scm.url。Gitで複数モジュールのmavenプロジェクトを公開

<packaging>pom</packaging> 
<groupId>org.project</groupId> 
<artifactId>project-parent</artifactId> 
<version>1.0.0-SNAPSHOT</version> 

<scm> 
    <connection>scm:git:git://github.com/username/project.git</connection> 
    <developerConnection>scm:git:[email protected]:username/project.git</developerConnection> 
    <url>http://github.com/username/project</url> 
</scm> 

<modules> 
    <module>api</module> 
    <module>spi</module> 
</modules> 

とモジュールのPOMは簡単です:私の親POMは次のようなものになります

<parent> 
    <groupId>org.project</groupId> 
    <artifactId>project-parent</artifactId> 
    <version>1.0.0-SNAPSHOT</version> 
</parent> 
<artifactId>api</artifactId> 
<version>0.2.2</version> 

私の目標は、彼らそれぞれが異なるバージョンを持っているので、個々のモジュールを解放することができることですが、私はしないでくださいリリースを行うたびにすべてのバージョンを一緒に増やしたいと思っています。私はapiディレクトリに変更し、私は次の出力と会ってるmvn release:clean release:prepareを行う

[INFO] Executing: cmd.exe /X /C "git push [email protected]:username/project.git/api master:master" 
[INFO] ------------------------------------------------------------------------ 
[ERROR] BUILD FAILURE 
[INFO] ------------------------------------------------------------------------ 
[INFO] Unable to commit files 
Provider message: 
The git-push command failed. 
Command output: 
ERROR: Repository not found. 

Mavenのリリースプラグインは、モジュール名を追加することによってscm.urlを作成するように見えますdeveloperConnection、これはgithubで有効なリポジトリではありません。これを設定する正しい方法は何か分かりません。 Maven + git +が個別の子モジュールを解放するだけではうまくいかない場合がありますか?すべての入力をいただければ幸いです。など、作業例を見て、この作品を作る方法を参照するには

答えて

14

https://github.com/sonatype/sonatype-aether

あなたは、個々の作品をリリースしたい場合は、これは助けにはなりません。その場合、<scm>要素をすべてのポムにコピーするだけです。

これはmaven devリストに関する議論の活発な話題ですが、そこからの解決策にはあなたの息を止めません。それは大きな問題です。

+2

私がしようとしているように、個々のモジュールからリリースするのではなく、トップレベルのPOMからプロジェクトがリリースされているようです。モジュールの1つのディレクトリの中から解放しようとすると、私が抱えている問題が発生します。モジュールのバージョンが異なるので、個々のモジュールをリリースできることが重要です。同時にすべてのモジュールのバージョンを増やしたくありません。 –

+1

誰もそれを見たことはありません。 – bmargulies

+0

情報ありがとうございます。これは議論されているmaven devのリストにあるスレッドへのリンクを持っていますか? –

10

「git-push command failed」の検索でこの質問が見つかりました。私は似たような設定をしています。私はマスターポームを持っていて、サブモジュールは自分のmavenパッケージとしてリリースします。

私は、のscmセクションを次のように調整しなければなりませんでした。接続は、具体的には作業のために調整する必要がありました。ギタブのものはまったく働かなかった。

<scm> 
    <url>https://github.com/XXX/YYY</url> 
    <connection>scm:git:ssh://[email protected]/XXX/YYY.git</connection> 
    <developerConnection>scm:git:ssh://[email protected]/XXX/YYY.git</developerConnection> 
</scm> 

上記の例のXXXは、githubのユーザー名です。 :を超える値がポート番号として解釈されるため、:XXX形式([email protected]:XXX/...)を使用することはできません。 YYYは明らかに、XXXアカウントのリポジトリ名です。

このパターンを使用して、3つすべてのサブモジュールを1つずつリリースしました。私が行ったように良い解決策を求めてこの質問に来る人のため

+0

これらのURLは私のために働いた。どうもありがとう ! – Cristiano

1

私は長い間、同様のことをやろうとしていましたが、良い解決策は見つからなかったので、gitのための自分のリリースプラグインを書きました。変更されたモジュールだけがリリースされ、scmの設定は必要ありません。モジュール名に基づいてタグ付けされ、コンポーネント間の依存関係が機能します。

ドキュメント:http://danielflower.github.io/multi-module-maven-release-plugin/index.html

紹介ブログ:http://danielflower.github.io/2015/03/08/The-Multi-Module-Maven-Release-Plugin-for-Git.html

0

簡単な方法、どのような私のために働いたことは、フォローなどのscmタグでのフォローなどのモジュールpom.xmlで親プロパティを使用することです:

<!--module pom.xml--> 
<scm> 
    <connection>${project.parent.scm.connection}</connection> 
    <developerConnection>${project.parent.scm.developerConnection}</developerConnection> 
</scm> 
関連する問題