9

単一のgitリポジトリに含まれるマルチモジュールプロジェクトの個々のモジュールをリリースしようとしています。

フォルダ構造は次のようになります。

  |- api/pom.xml
  |- database/pom.xml
  |- core/pom.xml
  pom.xml

<modules>親pomは、タグを使用することで意味のある方法ですべてのサブコンポーネントを構築する方法として使用されます。本質的には、API、データベース、コアの順に構築します。

プロジェクトはSVNでホストされて開始され、mavenタグのリポジトリ内のさまざまなパスをポイントするだけで、コマンドをscm簡単に再生できました。maven releaseこれはGitには当てはまらないようです。

実行mvn release:prepareすると、必要に応じてapi pomに変更が加えられますが、実行mvn release:performすると、親pomのビルドが試行され、database / pom.xmlにリストされているapi-snapshot依存関係を解決できないため、データベースパッケージのビルドに失敗します。 。

Gitリポジトリ内の特定のモジュールをリリースできるようにscmタグを構成するにはどうすればよいですか?これも可能ですか?

編集:pomサンプルの追加

pomファイルがどのように表示されるかのセットアップ例を次に示します。

親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/xsd/maven-4.0.0.xsd">

  <modelVersion>4.0.0</modelVersion>
  <groupId>com.findwise.hydra</groupId>
  <artifactId>hydra-parent</artifactId>
  <version>0.2.0</version>
  <packaging>pom</packaging>

  <modules>
    <module>api</module>
    <module>database</module>
    <module>core</module>
  </modules>
</project>

api / 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/xsd/maven-4.0.0.xsd">

  <modelVersion>4.0.0</modelVersion>
  <groupId>com.findwise.hydra</groupId>
  <artifactId>hydra-api</artifactId>
  <packaging>jar</packaging>
  <version>0.2.0</version>
  <name>${project.artifactId}</name>
  <description>Hydra API</description>

  <licenses>
    ...
  </licenses>

  <scm>
    ...
  </scm>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <dependencies>
    ...
  </dependencies>

  <build>
    <finalName>${project.name}</finalName>
    <plugins>
      ...
    </plugins>
  </build>
</project>

pomはdatabaseに非常によく似apiていますが、に依存していapiます。同じことがcore、に依存しますdatabase(そしてそれを通してapi)に依存します。

apiただし、アーティファクト自体は、クライアントAPIとバックエンドAPIdatabaseを定義するように、それ自体が重要です。これらは両方とも、アプリケーションとの統合に使用されます。これから、それらを別々にリリースするという当初の考えが生まれます。親pomは、スタック全体をより簡単に構築できるようにするための後付けにすぎません。apidatabase

4

1 に答える 1