簡體   English   中英

Maven部署和依賴項的版本

[英]Maven deploy and versions of dependencies

當我在子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>

兒童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>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>

看來你需要在本地安裝(甚至部署)父pom。 為此,您只需運行:

mvn clean install -N

在您的父項目目錄中。 -N選項不是強制性的,它只停止遞歸(所以它會非常快,因為只安裝了你的父pom)

我更喜歡一個不同的項目組織,其中父母和聚合是分開的。 我使用一個聚合器項目,它包含我的普通項目作為模塊和一個父項目,它也是我的聚合器項目的一個模塊。 此父項目在所有普通項目和聚合器之間共享。 我的父項目和普通項目存儲在聚合器項目目錄的子目錄中,並相應地設置每個parent元素的relativePath

只要您從聚合器項目目錄執行構建,此組織就可以更好地分離關注點並確保正確處理項目間依賴關系。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM