4

我在 maven/jenkins 中遇到了一个多模块项目的问题。例如我的结构是这样的:

---ProjectA
----pom.xml
--------ModuleA
---------pom.xml
--------ModuleB
---------pom.xml

---ProjectB
-----pom.xml

例如,ModuleA 对 ProjectB 中的某些内容具有依赖关系,该依赖关系在 ModuleA 的 pom 中定义,除了仅定义为属性并从 ProjectA 的属性部分继承的版本。

我想自动化发布过程,以摆脱所有 pom 中所有版本的手动更新。因此,在发布 ProjectB 之后,我将在 ProjectA 中添加所有引用。

编辑 更准确地说,我想发布 ProjectB,它必须包含 ProjectA 的发布(因为依赖关系),并且在 ProjectA 的新快照中,我想要引用最新的 ProjectB。

如果在同一个 pom.xml 中指定依赖项和版本号,maven 插件版本可以很好地做到这一点。如您所见,我的问题是(我在推测)当版本插件尝试检查 ProjectA 的 pom 中的属性字段时,该属性不能与依赖项关联。而且我猜版本插件看起来在有效的 pom 上,因为它可以发现 ModuleA 的 pom 中的依赖项应该被更新。它只是无法更新它,因为它没有在那里定义。

对于可以将我的属性保留在父 pom.xml 中的解决方案将非常有必要。

谢谢

4

1 回答 1

4

行。所以我想我已经解决了一些问题,但我会在这里发布给其他人看。

因此,我认为问题在于 autoLinkItem 仅搜索当前文件以进行链接,如果您希望属性与未在同一文件中指定的依赖项相关联,则可以在其中明确告诉插件。

像这样:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>versions-maven-plugin</artifactId>
    <version>1.2</version>
    <configuration>
        <properties>
            <property>
                <name>basis.version</name>
                <dependencies>
                    <dependency>
                        <groupId>com.mycompany.app.basis</groupId>
                        <artifactId>ModuleBasis</artifactId>
                    </dependency>
                </dependencies>
            </property>
        </properties>
        <includeProperties>basis.version</includeProperties>
        <generateBackupPoms>false</generateBackupPoms>
        <allowSnapshots>true</allowSnapshots>
    </configuration>
</plugin>
于 2012-06-14T08:00:04.587 回答