gpt4 book ai didi

maven - 在 Maven 3 中,我如何使用模块的 project.version 作为对另一个项目的依赖

转载 作者:行者123 更新时间:2023-12-01 08:15:54 26 4
gpt4 key购买 nike

我有如下概述的多模块 ejb3-web 应用程序:

project
- pom.xml
project_ear
- pom.xml
project_ejb
- pom.xml
project_web
- pom.xml

我有不同的类似项目,其中包括前一个项目 (project_ejb)。

project2
- pom.xml
project2_ear
- pom.xml
project2_ejb
- pom.xml (here, project_ejb is gonna be included as a dependency)
project2_web
- pom.xml

如您所见,它们具有相似的结构。无论如何,我面临的问题是当我想使用 ${project.version} 时,我无法再清理或构建 project2。


这里是项目的pom示例

“项目”父 pom:

<modelVersion>4.0.0</modelVersion>
<groupId>com.project</groupId>
<artifactId>project</artifactId>
<version>${project.version}</version>
<packaging>pom</packaging>

“project_ejb”pom:

   <modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.project</groupId>
<artifactId>project</artifactId>
<version>${project.version}</version>
<relativePath>../project/pom.xml</relativePath>
</parent>

<artifactId>projectEjb</artifactId>
<packaging>ejb</packaging>

project2 父 pom:

    <modelVersion>4.0.0</modelVersion>
<groupId>com.projectdata</groupId>
<artifactId>projectdata</artifactId>
<version>${project.version}</version>
<packaging>pom</packaging>

project2_ejb pom

    <modelVersion>4.0.0</modelVersion> 
<artifactId>projectdataEjb</artifactId>
<packaging>ejb</packaging>

<parent>
<groupId>com.projectdata</groupId>
<artifactId>projectdata</artifactId>
<version>${project.version}</version>
<relativePath>../projectdata/pom.xml</relativePath>
</parent>

我已经将 project_ejb 模块作为依赖项添加到 project2_ejb 中:

            <dependency>
<groupId>com.project</groupId>
<artifactId>projectEjb</artifactId>
<scope>provided</scope>
<type>ejb</type>
</dependency>

总而言之,当我构建项目时,一切正常。但是,当我尝试构建 project2 时,它出现了一个出现在 maven 控制台的问题并说:

 IllegalArgumentException: Illegal character in path at index 79: http://abcsvn01.host.myproject.net/maven/my/inhouse/com/project/project/${project.version}/project-${project.version}.pom -> [Help 1]

值得一提的是,当我去掉${project.version} 并写入常量时,一切正常。但是,为什么我不使用此功能,而 maven3 已经为我提供了。

如果有任何帮助,我将不胜感激。提前致谢。

最佳答案

当您引用父版本时,您必须包含特定版本。您不能使用 ${project.version}。这是因为您可能只想构建子项,而父项在 repo 中。然后你需要指向一个特定的父级。

你的 child 发生的事情是它试图找到一个名为 project-${project.version}.pom 的 pom 文件,那是因为你没有给出明确的版本号与。

这将起作用(将版本更改为您的特定版本)。该版本将由 child 继承。

<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.project</groupId>
<artifactId>project</artifactId>
<version>1.0-SNAPSHOT</version>
<relativePath>../project/pom.xml</relativePath>
</parent>

<artifactId>projectEjb</artifactId>
<packaging>ejb</packaging>

接下来您需要在 project2_ejb 中提供依赖的 projectEjb 的版本。否则它将不知道要使用哪个版本的 projectEjb。您的 projectproject2 不相关,因此它们的版本会有所不同。

添加了版本标签(更改为您的特定版本):

<dependency>
<groupId>com.project</groupId>
<artifactId>projectEjb</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>provided</scope>
<type>ejb</type>
</dependency>

关于maven - 在 Maven 3 中,我如何使用模块的 project.version 作为对另一个项目的依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12699119/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com