我正在尝试发布包含在单个 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 依赖项而无法构建数据库包.
我应该如何配置我的 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>
database
pom 看起来很像,api
但依赖于api
. 也是如此core
,这取决于database
(并通过它,取决于api
)。
和工件本身很重要,因为api
定义了客户端 API 和后端 API,它们都用于与应用程序集成。由此产生了单独发布它们的最初想法——父 pom 只是事后的想法,以允许更简单地构建整个堆栈。database
api
database