我有一个像下面这样的家长。
<?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) --子文件夹(有子pom)
当我在我的孩子中运行mvn干净安装时,我得到了下面的异常。
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?
发布于 2016-01-29 14:08:13
启动使用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>现在你必须这样打电话给Maven:
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
发布于 2016-01-29 10:59:13
您不能在<parent>部分拥有一个属性
Maven需要在处理构建之前加载父级来设置所有属性(用于项目继承,等等)
每个项目都由groupId、artifactId和版本标识。在父部分中,需要设置这3个属性来显式标识父属性。
为了在所有pom上轻松地更新版本,请考虑使用插件或目标
编辑:看到了关于类似问题的另一个线程:Maven项目版本继承-我必须指定父版本吗?
https://stackoverflow.com/questions/35082682
复制相似问题