当前位置: 首页 > 知识库问答 >
问题:

Maven属性的问题

酆华皓
2023-03-14

我有一个像下面这样的家长。

<?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/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.parent.pom</groupId>
    <artifactId>parent-pom</artifactId>
    <version>1.0.0</version>
    <name>parentpom</name>
    <packaging>pom</packaging>
    <properties>
        <parentversion>1.0.0</parentversion>
    </properties>
</project>

而我的孩子波姆就像。

<?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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>

<parent>
    <groupId>com.parent.pom</groupId>
    <artifactId>parent-pom</artifactId>
    <version>${parentversion}</version>
    <relativePath>../pom.xml</relativePath>
  </parent>
    <groupId>com.child.pom</groupId>
    <artifactId>child-pom</artifactId>
    <version>2.0.0</version>
    <name>Childpom</name>
    <packaging>pom</packaging>
</project>

我的文件夹结构像

POM-test(根文件夹具有父pom)---child(具有子pom)

当我运行mvn clean install时,我的孩子得到了如下的异常。

ERROR] The build could not read 1 project -> [Help 1]
ERROR]
ERROR]   The project com.child.pom:child-pom:2.0.0 (C:\Users\kk\Desktop\POM-Test\child\pom.xml) has 1 error
ERROR]     Non-resolvable parent POM: Could not transfer artifact com.parent.pom:parent-pom:pom:${parentversion} from/to central (http://repo.maven.apache.org/
maven2): Illegal character in path at index 63: http://repo.maven.apache.org/maven2/com/parent/pom/parent-pom/${parentversion}/parent-pom-${parentversion}.pom 
and 'parent.relativePath' points at wrong local POM @ line 5, column 9 -> [Help 2

为什么我不能安装这个pom?

共有1个答案

艾晋
2023-03-14

从Maven 3.2.1开始,如果您愿意,可以在您的版本中使用属性${revision}${sha1}${changelist}

所以您可以这样使用它:

  <groupId>com.soebes.examples.j2ee</groupId>
  <artifactId>parent</artifactId>
  <version>${revision}</version>
  <packaging>pom</packaging>

  <modules>
    <module>child</module>
  </modules>

你可以这样用在孩子身上:

  <modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>com.soebes.examples.j2ee</groupId>
    <artifactId>parent</artifactId>
    <version>${revision}</version>
  </parent>

  <artifactId>child</artifactId>
mvn -Drevision=1.2.3-SNAPSHOT clean package
mvn -Drevision=1.2.3 clean package

此外,不需要给定的 ../pom.xml ,因为它是默认值,所以可以省略它。

非常重要。如果您有一个如您所描述的结构,那么子结构应该始终具有与父结构相同的版本(在多模块构建的情况下,如给定的示例),或者父结构(企业pom)应该是一个单独的项目,这意味着也是一个单独的git存储库。此外,关于另一个解释,请查看此处:https://stackoverflow.com/a/35057833/296328

 类似资料:
  • 我试图在使用openapi 3规范设计的API中引入可为null的属性。其思想是始终将属性返回给客户端,无论其值是否为null。 YAML文件(我先尝试了,没有默认,结果相同): 生成Java代码: API的响应: 因此,无论属性是否为null,结果总是“present:true”。如果没有nullability,它就可以正常工作,除了从响应中删除不需要的null值。 有什么想法吗? P、 该物业

  • TestNG属性“DelegateCommandSystemProperties”不能与maven surefire插件一起使用。 我试图在testng.xml中运行一个测试,它使用名为“count”的参数。 我在其中配置属性的pom.xml代码段 简而言之,我需要帮助从maven surefire命令将参数传递给testng test!

  • 是否存在具有VCS根目录的Maven属性?即或目录的父目录? 我需要提取Java8个用于测试的JRE二进制文件。在詹金斯的构建过程中使用是有效的,我只得到一次JRE,我可以在任何地方使用它。但是如果我手动运行一个子项目,我会得到另一个提取的JRE副本。

  • 我有豆子,例如 服务(特定服务)是使用抽象方法初始化()扩展抽象类MyService并使用方法特定的Logic()实现接口MyInterface的类。 因此,管理器在服务对象上调用方法init(),如下所示: 但当bean初始化时,我有以下问题: 无法转换“java.util”类型的属性值。将LinkedHashSet设置为所需类型“java.util”。设置“for property”“serv

  • 我使用最新版本的Java- 注入构造函数时出错,java。lang.ExceptionInInitializerError:无法访问组织属性的默认字段。阿帕奇。专家插件。战争沃莫霍。(未知源)查找组织时。阿帕奇。专家插件。战争沃莫霍 我如何解决这些问题?它们是由Java版本引起的吗?

  • 在阅读了关于这个主题的大约50个不同的线程后,我还没有能够有任何解决方案工作。 我正在尝试访问JAR中的config.properties文件。 null null file.jar MyApp 此处的files.class 等… icon.jpg config.properties