Выпуск проекта Maven с несколькими модулями -, размещенного в одном репозитории Git

Я пытаюсь выпустить отдельные модули многомодульного -проекта, содержащегося в одном репозитории git.

Структура папок выглядит примерно так:

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

Родительский pom просто используется как способ построения всех подкомпонентов таким образом, который имеет смысл при использовании тега <modules>. По сути, создание API, затем базы данных, затем ядра.

Проект изначально размещался в SVN, и, просто указав разные пути в репозитории в теге maven scm, было легко заставить команды maven releaseработать хорошо. Кажется, это не относится к Git.

При запуске mvn release:prepareон вносит необходимые изменения в pom API, но при выполнении mvn release:performон пытается построить родительский pom и не может собрать пакет базы данных из-за неспособности разрешить зависимость моментального снимка API -, которая указан в базе данных/pom.xml.

Как настроить теги scm, чтобы иметь возможность выпускать определенный модуль в репозитории Git? Это вообще возможно?

Редактировать :добавление образцов 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>

databasepom очень похож на api, но зависит от api. То же самое касается core, которая зависит отdatabase(и через него, наapi).

Артефакты apiи databaseсами по себе важны, поскольку apiопределяет клиентский API и databaseвнутренний API, оба из которых используются для интеграции с приложением. Из этого вытекает первоначальная мысль о выпуске их по отдельности --.

6
задан JJD 18 September 2013 в 18:27
поделиться