【问题标题】:TeamCity, Maven Build not found child moduleTeamCity,Maven Build 未找到子模块
【发布时间】:2023-03-29 12:15:01
【问题描述】:

我有一个带有一个子项目的 Maven 项目,当我在 IDEA (IntelliJ IDEA) 的父项目上运行我的安装任务时,一切正常,ma​​ven 解析子模块。

我的项目在 subversion 上进行版本控制,这是文件系统结构:

project
|--pom.xml
|--subproject
   |
   |-- branches
   |-- tags
   |-- trunk (here there is my subproject source, also pom.xml file)

我已经在 teamcity 服务器上从 svn URL 创建了带有子项目的项目。

当我在父项目上运行 Build 时,它失败并返回以下错误:

[Step 1/1] Error reading Maven project: Some problems were encountered while processing the POMs:
[ERROR] Child module /opt/buildAgent/work/ee114e0c77ee2c44/subproject of /opt/buildAgent/work/ee114e0c77ee2c44/pom.xml does not exist @ 

我如何告诉 parent-project-build 它在哪里找到子模块?

还有什么问题吗?

父 POM:

<?xml version="1.0" encoding="UTF-8"?>
<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>it.company.project</groupId>
  <artifactId>MyProject</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>pom</packaging>

  <name>MyProject</name>
  <url>http://maven.apache.org</url>

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

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
  <modules>
    <module>Foo</module>
  </modules>
</project>

子 POM:

<?xml version="1.0"?>
<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>

    <parent>
        <groupId>it.company.project</groupId>
        <artifactId>MyProject</artifactId>
        <version>1.0-SNAPSHOT</version>
    </parent>

    <groupId>it.company.subproject</groupId>
    <artifactId>subproject</artifactId>
    <packaging>jar</packaging>
    <version>1.0-SNAPSHOT</version>
    <name>subproject</name>
    <url>http://maven.apache.org</url>

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

    <build>
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.java</include>
                </includes>
            </resource>
        </resources>
    </build>
</project>

编辑: 我在父 pom.xml 中添加了新参数(pathSubproject),因此当我运行父构建时,它跳过了之前的错误,但现在在尝试解决对子项目的父依赖时它崩溃了。所以我也在子项目(parentPath)中添加了一个新参数,并将它传递给父标签内的 relativePath。

Non-resolvable parent POM: Could not find artifact it.company.project:MyProject:pom:1.0-SNAPSHOT and 'parent.relativePath'

我认为我的子项目 POM 无法解析我放入 &lt;relativePath 标记内的属性。

是否可以将属性传递给relativePath 标签?


谢谢

【问题讨论】:

    标签: maven svn teamcity pom.xml


    【解决方案1】:

    在您父项目的 pom 的 &lt;modules/&gt; 部分中,列出的每个模块都是包含该模块的目录的相对路径。

    所以如果你不想改变目录结构,你应该可以使用&lt;module&gt;subproject/trunk&lt;/module&gt;来引用你的子项目的主干。

    不过,这似乎有点笨拙。如果您使用聚合器/模块模式,我建议 projectsubproject 都在同一个 SVN 存储库中。如果这不合适,那么您的 subproject 可能不是真正的模块,而应该是依赖项或将 project 作为其父工件。

    【讨论】:

    • 我的项目和子项目都在同一个SVN存储库中,存储库的结构如我的问题所示。我更喜欢将我的主开发线分配给其他分支线,因此我为每个子项目创建了 3 个子文件夹:主干、标签和分支。
    • 好的,那么使用子项目/主干模块应该可以工作。你试过吗?
    • 我在父 pom.xml 中添加了新参数 (pathSubproject),因此当我运行父构建时,它跳过了之前的错误,但现在在尝试解决对子项目的父依赖时它崩溃了。这是错误The project it.company.project:Subproject:3.0 (/opt/buildAgent/work/ee114e0c77ee2c44/subproject/trunk/pom.xml) has 1 error
    • 我可以将属性传递给&lt;relativePath&gt;标签吗?
    • 不知道,当你尝试它时会发生什么?如果我是你,我会尝试让它与硬编码的值一起工作,然后一旦它工作,就开始将这些值分解为属性。
    【解决方案2】:

    我通过在我的父 pom 中创建 2 个profile 来解决我的问题,第一个使用所有子模块构建父应用程序,而后者只构建父应用程序。

    在 TeamCiTY 构建配置设置中,我指定了(在 Additional Maven 命令行参数中)仅构建父模块的配置文件,并且在我构建了父应用程序之后。

    在我构建了父应用程序之后,我构建了所有子模块,然后我能够构建包含所有模块的父应用程序。

    我不确定这是不是正确的方法,但就我而言,它运作良好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-31
      • 2020-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-04
      • 2022-11-01
      • 2011-07-24
      相关资源
      最近更新 更多