0

当我在子 pom 中的依赖项版本被定义为父 pom 中的属性的项目上运行 mvn deploy 时,版本号不会在已部署的工件中扩展。

在这个例子中 ${spring.version} 没有展开。我可以让 Maven 扩展版本属性吗?

父pom:

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

<groupId>TestProject</groupId>
<artifactId>TestProject</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>

<modules>
    <module>test</module>
</modules>

<properties>
    <spring.version>3.2.2.RELEASE</spring.version>
</properties>

<distributionManagement>
    <snapshotRepository>
        <id>dips_snapshot</id>
        <url>http://mavenrepo.dips.local/repository/dips_snapshot</url>
    </snapshotRepository>
</distributionManagement>
</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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>TestProject</groupId>
<artifactId>subproject</artifactId>
<version>1.0-SNAPSHOT</version>

<parent>
    <groupId>TestProject</groupId>
    <artifactId>TestProject</artifactId>
    <version>1.0-SNAPSHOT</version>
</parent>

<dependencies>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-beans</artifactId>
        <version>${spring.version}</version>
    </dependency>
</dependencies>

部署的pom:

<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>TestProject</groupId>
<artifactId>subproject</artifactId>
<version>1.0-SNAPSHOT</version>
<parent>
<groupId>TestProject</groupId>
<artifactId>TestProject</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${spring.version}</version>
</dependency>
</dependencies>
</project>
4

2 回答 2

1

看来您需要在本地安装(甚至部署)父 pom。为此,您可以简单地运行:

mvn clean install -N

在您的父项目目录中。该-N选项不是强制性的,它只会停止递归(所以它会非常快,因为只有你的父 pom 会安装)

于 2013-04-16T14:51:53.083 回答
1

我更喜欢不同的项目组织,其中父母身份和聚合是分开的。我使用一个聚合器项目,其中包含我的普通项目作为模块和一个父项目,它也是我的聚合器项目的一个模块。这个父项目在所有普通项目和聚合器之间共享。我的父项目和普通项目存储在聚合器项目目录的子目录中,并且relativePath每个parent元素的 都进行了相应设置。

只要您从聚合器项目目录执行构建,该组织就可以更好地分离关注点并确保正确处理项目间的依赖关系。

于 2013-04-16T15:01:38.520 回答