首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Maven属性问题

Maven属性问题
EN

Stack Overflow用户
提问于 2016-01-29 10:53:59
回答 2查看 529关注 0票数 1

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

代码语言:javascript
复制
<?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>

我的孩子就像。

代码语言:javascript
复制
<?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) --子文件夹(有子pom)

当我在我的孩子中运行mvn干净安装时,我得到了下面的异常。

代码语言:javascript
复制
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?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-29 14:08:13

启动使用Maven 3.2.1时,您可以在您的版本中使用属性${revision}${sha1}${changelist}

所以你可以这样使用它:

代码语言:javascript
复制
  <groupId>com.soebes.examples.j2ee</groupId>
  <artifactId>parent</artifactId>
  <version>${revision}</version>
  <packaging>pom</packaging>

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

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

代码语言:javascript
复制
  <modelVersion>4.0.0</modelVersion>

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

  <artifactId>child</artifactId>

现在你必须这样打电话给Maven:

代码语言:javascript
复制
mvn -Drevision=1.2.3-SNAPSHOT clean package
mvn -Drevision=1.2.3 clean package

您可以查看一下这里是完整的例子。。如果需要更改版本,我建议使用版本-maven-插件将构建中的版本更改为您喜欢的任何版本(例如在CI解决方案中),或者在发布版本时可以使用maven-发布插件来处理。对于开发,您应该使用类似于:1.2.3.45-SNAPSHOT (着重强调-SNAPSHOT)的方法来识别当前开发中的情况。

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

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

票数 1
EN

Stack Overflow用户

发布于 2016-01-29 10:59:13

您不能在<parent>部分拥有一个属性

Maven需要在处理构建之前加载父级来设置所有属性(用于项目继承,等等)

每个项目都由groupId、artifactId和版本标识。在父部分中,需要设置这3个属性来显式标识父属性。

为了在所有pom上轻松地更新版本,请考虑使用插件目标

编辑:看到了关于类似问题的另一个线程:Maven项目版本继承-我必须指定父版本吗?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35082682

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档