当前位置: 首页 > 面试题库 >

如何在詹金斯中构建多模块Maven项目

林和煦
2023-03-14
问题内容

我的项目结构如下:

ProjectParent
 - pom.xml
 ProjectApp
   -pom.xml
 ProjectAPI
   -pom.xml
 ProjectModels
   -pom.xml
 ProjectServices
   -pom.xml
 Etc..

ProjectModels/ProjectsServices是内的依赖项ProjectAPI/ProjectApp

  1. 我是否应该在Jenkins中创建单独的作业以分别构建每个模块?

  2. 我为此创建了工作,ProjectAPP但在下面得到以下错误(已将目标和操作设置为“全新安装”:

[INFO]扫描项目… [INFO]
[INFO] -----------------------------------
------------------------------------- [INFO]构建myproject-app 0.0.1-SNAPSHOT [
INFO] ------------------------------------------------
------------------------

Downloading:

http://maven.springframework.org/snapshot/com/myproject/myproject-common-
config/0.0.1-SNAPSHOT/myproject-common-config-0.0.1-SNAPSHOT.pom
[WARNING] The POM for com.myproject:myproject-common-
config:jar:0.0.1-SNAPSHOT is missing,

没有可用的依赖项信息下载:http :
//maven.springframework.org/snapshot/com/myproject/myproject-
entities/0.0.1-SNAPSHOT/myproject-
entities-0.0.1-SNAPSHOT.pom [警告] com的POM
.myproject:myproject-
entities:jar:0.0.1-SNAPSHOT丢失,没有依赖项信息下载:http :
//maven.springframework.org/snapshot/com/myproject/myproject-
services/0.0.1-SNAPSHOT/myproject
-services-0.0.1-SNAPSHOT.pom [警告]
com.myproject:myproject-
services:jar:0.0.1-SNAPSHOT的POM丢失,没有可用的依赖项信息下载:http :
//maven.springframework.org/快照/com/myproject/myproject-
persistence/0.0.1-SNAPSHOT/myproject-
persistence-0.0.1-SNAPSHOT.pom [警告]
com.myproject:myproject-
persistence:jar:0.0.1-SNAPSHOT的POM丢失,没有可用的依赖项信息下载:http :
//maven.springframework.org/snapshot/com/myproject/myproject-common- config
/ 0.0.1-SNAPSHOT / myproject-common-
config-0.0.1-SNAPSHOT.jar
......
org.apache.maven.lifecycle.LifecycleExecutionException:无法在项目myproject-
app上执行目标:无法解析项目com.myproject:myproject-
app:war:0.0.1-SNAPSHOT的依赖项:无法解析工件:com.myproject:myproject-common-
config:jar:0.0.1-SNAPSHOT,com.myproject:myproject-
entities:jar:0.0.1-SNAPSHOT,com.myproject:myproject-services:jar:
0.0.1-SNAPSHOT,com.myproject:myproject-
persistence:jar:0.0.1-SNAPSHOT:在org.springframework.maven中找不到工件com.myproject:myproject-
common-
config:jar:0.0.1-SNAPSHOT。快照(http://maven.springframework.org/snapshot)

ProjectParent 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>com.myproject</groupId>
    <artifactId>myproject-parent</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>pom</packaging>

    <modules>
        <module>myproject-entities</module>
        <module>myproject-services</module>
        <module>myproject-persistence</module>
        <module>myproject-app</module>
        <module>myproject-merchant</module>
        <module>myproject-common-config</module>
        <module>myproject-api</module>
    </modules>

    <dependencyManagement>
        <dependencies>
            ...
        </dependencies>
    </dependencyManagement>

    <repositories>      
        ...
    </repositories>

    <build>
        ...
    </build>

    <properties>
        ...

        <myproject-entities-version>0.0.1-SNAPSHOT</myproject-entities-version>
        <myproject-services-version>0.0.1-SNAPSHOT</myproject-services-version>
        <myproject-persistence-version>0.0.1-SNAPSHOT</myproject-persistence-version>
    </properties>

</project>

ProjectApp Pom

<?xml version="1.0"?>
<project
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
    xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.myproject</groupId>
        <artifactId>myproject-parent</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>

    <artifactId>myproject-app</artifactId>
    <packaging>war</packaging>

    <version>0.0.1-SNAPSHOT</version>
    <name>myproject-app</name>
    <url>http://maven.apache.org</url>


    <dependencies>

        ...

        <dependency>
            <groupId>com.myproject</groupId>
            <artifactId>myproject-common-config</artifactId>
            <version>${myproject-common-config}</version>
        </dependency>

        <dependency>
            <groupId>com.myproject</groupId>
            <artifactId>myproject-entities</artifactId>
            <version>${myproject-entities-version}</version>
        </dependency>

        <dependency>
            <groupId>com.myproject</groupId>
            <artifactId>myproject-services</artifactId>
            <version>${myproject-services-version}</version>
        </dependency>

        <dependency>
            <groupId>com.myproject</groupId>
            <artifactId>myproject-persistence</artifactId>
            <version>${myproject-persistence-version}</version>
        </dependency>

    </dependencies>

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

        <myproject-common-config>0.0.1-SNAPSHOT</myproject-common-config>
        <myproject-entities-version>0.0.1-SNAPSHOT</myproject-entities-version>
        <myproject-services-version>0.0.1-SNAPSHOT</myproject-services-version>
        <myproject-persistence-version>0.0.1-SNAPSHOT</myproject-persistence-version>
    </properties>

</project>

我使用了错误的目标吗?我需要链接多个命令吗?即首先建立其他模块?

我正在使用Maven 3。

注意:我将目标更改为针对ParentProject Pom的“全新安装”,并且一切正常。

谢谢


问题答案:

问题是您不能仅为ProjectApp模块创建项目,因为它依赖于ProjectApp父级以下的其他模块。如果您不将这些模块部署到您的Maven存储库中,则Maven将无法在存储库或构建反应堆中找到它们。

相反,您应该为父级创建作业。这将构建必要的模块。

also-make-dependants当您有的工作时,也可以使用该选项ProjectApp,但是我对此没有任何经验。



 类似资料:
  • 问题内容: 我在Mercurial回购中托管了一个Gradle多项目。我想以这种方式设置我的Jenkins:如果我仅将更改提交到1个子项目中,则仅会构建该子项目并将其发布到我的Nexus存储库中。 有人可以给我提示吗?还是完全有可能? 问题答案: 在这里留下将来的最终解决方案。 我们为每个子项目创建了一个单独的Jenkins作业。Jenkins的Mercurial插件允许指定“模块”: 通过在存储

  • 我的项目结构如下: 是内的依赖项。 > 我应该在Jenkins中创建单独的作业来单独构建每个模块吗? 我为创建了一个作业,但出现以下错误(已将目标和操作设置为“清洁安装”: [INFO]扫描项目...[INFO] [INFO] ------------------------------------------------------------------------ [INFO]构建mypro

  • 嗨我在网上搜了一遍,看了一堆文章,所以问题和文档都找不到解决办法,这里是我的问题。 我有一个多模块maven项目,其中包含三个模块a、B和C,a和B独立,C依赖于a和B,当然我有一个父项目。我还设置了一个jenkins服务器来构建这些项目,以及一个nexus存储库。 如有任何帮助,不胜感激。谢谢!

  • 但我在模块2中添加了依赖项。模块2是最后一个项目。 项目结构如下。 父项目的pom.xml

  • 问题内容: 我正在Jenkins中执行批处理文件以构建cpp代码,并且我在两者之间有一条命令来构建可执行文件,例如“ g sourcefile.cpp -o可执行文件”,并且它给出错误“ g ”,无法识别为内部或外部命令。如何解决这个问题? 问题答案: 当Jenkins作为服务在Windows机器上运行时,它将以系统帐户而不是用户帐户(或您的帐户)运行。因此,您需要确保为系统帐户完成设置路径等所需

  • 问题内容: 詹金斯版 1.538 使用Maven 3.1.0可以正常工作 使用Maven 3.2.1时,出现以下错误 Jenkins本身安装了Maven 3.2.1(从Apache下载并解压缩) 怎么了? 问题答案: JENKINS-22486已通过Maven插件 2.8 修复。