为什么我在 pom 文件中的依赖项的 maven 坐标之一更改为遵循新项目的 maven 坐标

问题描述

我从一个项目创建了一个 maven 原型,在这个项目的 pom 文件中,有一个依赖 demo-admin

WITH t0 as (SELECT 1 as bigid,1 as id,10 as value
UNION ALL 
SELECT 2,1,14 
UNION ALL 
SELECT 3,18 
UNION ALL 
SELECT 4,11 
UNION ALL 
SELECT 5,13 
UNION ALL 
SELECT 6,14 
UNION ALL 
SELECT 7,2,19 
UNION ALL 
SELECT 8,19
UNION ALL 
SELECT 9,11 
UNION ALL 
SELECT 10,13 
UNION ALL 
SELECT 11,14 
UNION ALL 
SELECT 12,19 
UNION ALL 
SELECT 13,3,19),avgs as (
SELECT 
  id,bigid,value,AVG(value) OVER (last_3_window ROWS BETWEEN 2 PRECEDING AND CURRENT ROW) avg
FROM t0
WINDOW last_3_window AS (partition by id ORDER BY bigid)),max_bigid as (
  select id,max(bigid) as max_bigid 
  from t0 group by 1)

select a.id,a.avg 
  from max_bigid m 
  left join avgs a on m.id = a.id and a.bigid = m.max_bigid

此依赖项安装在我的本地存储库中。

但是当我检查生成的原型文件,原型资源文件夹中的 pom.xml 文件时,依赖项如下

<dependency>
    <groupId>com.demo</groupId>
    <artifactId>demo-admin</artifactId>
    <version>${demo-admin.version}</version>
</dependency>

所以每次我从原型创建一个新项目时,这个依赖项的 maven 坐标都会改变。

有人遇到同样的问题吗?

编辑: 可以按以下步骤重现此问题:

  1. 创建一个如下 GAV 的项目
<dependency>
    <groupId>${groupId}</groupId>
    <artifactId>${rootArtifactId}-admin</artifactId>
    <version>${version}</version>
</dependency>
  1. 创建一个 GAV 如下的项目
    <groupId>com.demo</groupId>
    <artifactId>abc-admin</artifactId>
    <version>1.0.0</version>
  1. 第二个项目包含一个依赖项
    <groupId>com.demo</groupId>
    <artifactId>abc</artifactId>
    <version>1.0.0</version>
  1. 使用以下命令从第二个项目创建原型 一种。 cd abc 湾清洁 C。 mvn 原型:从项目创建

  2. 进入“abc/target/generated-sources/archetype/src/main/resources/archetype-resources”文件夹,可以看到一个pom文件,在pom文件中,依赖如下>

<dependency>
    <groupId>com.demo</groupId>
    <artifactId>demo-admin</artifactId>
    <version>1.0.0</version>
</dependency>

所以,如果我基于 abc 原型创建一个新项目,当我输入不同的 GAV 时,依赖也会根据输入值发生变化

解决方法

我猜这是用占位符自动替换您的演示项目的 groupId 和 artifactId。

要么为您的演示项目提供一个从未出现在其他任何地方的名称,要么通过用正确的值替换占位符来编辑生成的原型。