1

Maven リリース プラグイン 2.3.2Maven 3.0.4を使用していますが、準備と分岐の段階で問題が発生しました。

のようなsvnパスがありhttp:/svn.pyhost.com/projects/App1ます。App1には 3 つのディレクトリが含まれています。

App1/trunk
App1/branches
App1/tags

トランクが含まれています

App1/trunk/ApplicationParent
App1/trunk/ApplicationChild

ApplicationParentそこで、 と のみで新しいタグを作成したいと思いますApplicationChildpom.xmlそのため、次のようなものを配置した場所に構成を作成しました。

<scm>   
<connection>http:/svn.pyhost.com/projects/App1/trunk</connection> 
<developerConnection>http:/svn.pyhost.com/projects/App1/trunk</developerConnection>
<url>http:/svn.pyhost.com/projects/App1/trunk</url>
</scm> 


<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<tagBase>http:/svn.pyhost.com/projects/App1/tags</tagBase>
<branchBase>http:/svn.pyhost.com/projects/App1/branches</branchBase>
</configuration>
</plugin>
</plugins>
</build>

次に、私が実行し、mavenがすべての fromが含まれるmvn release:prepare新しいタグを作成しました。ApplicationParent-1.0App1 (trunk, branches and tags)scm

http:/svn.pyhost.com/projects/App1/trunkそのため、トランク辞書からすべてタグ付けすることを期待していましたが、mavenはディレクトリを作成ApplicationParent-1.0して配置しました。trunk, branches and tagsなんで ?

そのため、scm を に変更して再度http:/svn.pyhost.com/projects/App1/trunk/ApplicationParent実行mvn release:prepareしました。これで問題ありません。ApplicationParent-1.1 では、トランク ディレクトリからすべて取得しています。

しかし、 をmvn release:branch使って実行するhttp:/svn.pyhost.com/projects/App1/trunk/ApplicationParentと、 だけで新しいブランチを持つことができますがApplicationParent、すべてのトランク辞書のブランチを作成する必要があるため、 に変更scmする必要があり、http://svn.pyhost.com/projects/App1/trunk/ブランチを作成したい場合はそれで良いです。しかし、を使用して新しいタグを作成する必要がある場合、release:perform上記で説明した問題があります。

http:/svn.pyhost.com/projects/App1/trunkとの両方release:performにpath like を使用できないのはなぜrelease:branchですか?

4

1 に答える 1

1

あなたの SCM は、Maven リリース プラグインが満足するような構造になっていないように感じます。次の記事では、プラグインが理解する構造の一部について説明しています

説明した形式はサポートされていますが、それを pom.xml ファイルに反映していないか、本質的に 2 つの異なるプロジェクト (ApplicationParent と ApplicationChild) に単一の pom.xml ファイルを使用しようとしています。

SCM を次のように再構築することをお勧めします。

App1/ApplicationParent
    /trunk
    /tags
    /branches
    /releases
App1/ApplicationChild
    /trunk
    /tags
    /branches
    /releases

次に、ApplicationParent の pom.xml での開発者接続は次のようになります。

<developerConnection>http:/svn.pyhost.com/projects/App1/ApplicationParent/trunk</developerConnection>

およびタグ/ブランチベース:

<tagBase>http:/svn.pyhost.com/projects/App1/ApplicationParent/tags</tagBase>
<branchBase>http:/svn.pyhost.com/projects/App1/ApplicationParent/branches</branchBase>

子プロジェクトの場合:

<developerConnection>http:/svn.pyhost.com/projects/App1/ApplicationChild/trunk</developerConnection>

およびタグ/ブランチベース:

<tagBase>http:/svn.pyhost.com/projects/App1/ApplicationChild/tags</tagBase>
<branchBase>http:/svn.pyhost.com/projects/App1/ApplicationChild/branches</branchBase>

ただし、私の個人的な好みは、/trunk ではなくリリース ブランチ (/releases/xyz など) からのみリリース プラグインを実行することです。したがって、SCM 内で分岐し、新しいリリース ブランチをチェックアウトして、リリース ブランチで release:prepare および release:perform マジックを実行します。

"mvn release:prepare -DdryRun=true" を使用することを忘れないでください。これにより、実際のリリース前に何を行うかを確認できます。それが正常に機能したら、単一の maven コマンドとして「release:clean release:prepare release:perform」を実行できます。

于 2012-11-23T01:26:56.843 に答える