1

私はMavenを初めて使用し、プロジェクトをリリースする方法を理解しようとしています。私はsvnで次のプロジェクトをセットアップしています:

trunk
  |-deployer
  |    |-pom.xml
  |-webapp
  |    |-pom.xml
  |-utils      
       |-pom.xml

webappを開発している間、私は常にutilsの最新のスナップショットバージョンに対して開発したいので、webapp/pom.xmlでutilsへの依存関係を次のように宣言します。

com.companyutils1.0-スナップショット

Webapp自体も現在バージョン1.0-SNAPSHOTでバージョン管理されています。pom.xmlには次の宣言があります。

<artifactId>webapp</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>Sample Webapp</name>

ですから、すべてがうまく機能していますが、今はソフトウェアをリリースしたいと思っています。デプロイヤーでは、pom.xmlに次のものがあります。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.company</groupId>
  <artifactId>deployer</artifactId>
  <packaging>pom</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>Project Release</name>

  <modules>
    <module>externals/webapp</module>
  </modules>

  <properties>
    <url.svn>http://<my-server>/<project>/trunk</url.svn>
  </properties>
  <scm>
    <connection>scm:svn:${url.svn}</connection>
  </scm>

  <build>
    <plugins>
      <plugin>
        <artifactId>maven-release-plugin</artifactId>
        <version>2.3</version>
        <configuration>
          <tagBase>
            http://<my-server>/<project>/tags
          </tagBase>
        </configuration>
      </plugin>

    </plugins>
  </build>

  <distributionManagement>
    <repository>
      <id>Releases</id>
      <name>Releases</name>
      <url>http://<nexus-server>/nexus/content/repositories/releases</url>
    </repository>
    <snapshotRepository>
      <id>Snapshots</id>
      <name>Snapshots</name>
      <url>http://<nexus-server>/nexus/content/repositories/snapshots</url>
    </snapshotRepository>
  </distributionManagement>

</project>

デプロイヤーフォルダー自体の中に、「externals」というフォルダーがあり、Webアプリケーションプロジェクトをチェックアウトするようにsvn-externalsが設定されています(mavenがプロジェクトを見つけることができないと文句を言ったため、これを追加しました)。したがって、モジュールパスは正しいはずです。

質問

1.)Webアプリのバージョンをリリースしたいのですが、デプロイヤープロジェクトでとを実行するmvn release:preparemvn release:perform、svnでタグ付けされたトランクとnexusリポジトリにアップロードされたpomだけが具体的な出力になります。これは、デプロイヤアーティファクトのパッケージ化が「pom」タイプであるという意味で理にかなっていますが、Webアプリケーションの戦争を起こさせるという仕事も完了していません(Webアプリケーションプロジェクトでリリースを単独で行う場合は、ここで注意する必要があります)しかし、私は戦争をするでしょう)。複数のモジュールをリリースする必要があるため、デプロイヤープロジェクトのMavenアグリゲーションを使用してこれを実現できると思いましたが、機能していないようです。

2.)私がやろうとしていることを達成するためのより良い方法はありますか?

あなたが提供できる洞察に感謝します。

4

2 に答える 2

2

リリースする各モジュールに対してmaven-release-pluginを実行する必要があります。他のモジュールをリリースする特別な「デプロイヤー」モジュールを誰かが持っているのを見たことがありません。これは一般的に行われている方法ではありません。

通常、webappモジュールを解放するには、webappモジュールに対してコマンドを実行し、utilsモジュールを解放するには、utilsモジュールに対してコマンドを実行します。

webappとutilを結び付ける親モジュールがある場合は、それに対してreleaseコマンドを実行できると思います。

于 2012-09-05T20:56:05.857 に答える
0

matt bが言うように、一番上のpomにmaven-release-pluginエントリを追加するだけで、おそらくあなたが望むことをするでしょう。複数のアーティファクトを適切なリリースバンドルに収集する場合は、このためのモジュールを作成する必要がありますが、その後、Mavenアセンブリプラグインを確認する必要があります。さまざまなjarファイル(モジュールまたは外部の依存関係から)とリソースをディレクトリ、zipファイルなどに収集できます。

于 2012-09-05T22:23:57.373 に答える