Maven не интерпретирует все свойства в некоторых дочерних poms - PullRequest
0 голосов
/ 20 июля 2011

Мы работаем над довольно большим проектом со многими модулями, и мы используем maven 2.2.1 для его сборки. Мы объявили некоторые свойства в главном файле pom.xml для наличия версии зависимости в одном месте.
Вот так выглядит эта часть нашего pom.xml:

 <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.blah.as.common</groupId>
<artifactId>caoas</artifactId>
<version>1.0.1</version>
<packaging>pom</packaging>
<name>AS :: caoas</name>

<modules>
    <module>common</module>
    <module>services</module>
    <module>datamanagement</module>
</modules>

<properties>
    <jslee.version>1.1</jslee.version>
    <rhino.version>2.1</rhino.version>
    <diameterro.ra.version>2.2.0.1</diameterro.ra.version>
    <cdr.ra.version>2.1.1.0</cdr.ra.version>
    <cgin.ra.version>1.3.2</cgin.ra.version>
    <cgin.oc-common.version>1.3.0</cgin.oc-common.version>
    <cgin.in-datatypes.version>5.1.3.2</cgin.in-datatypes.version>
    <ra.tracelevel>Finest</ra.tracelevel>
</properties>
  ...
  </project>

Мы используем эти свойства в нескольких модулях, и в большинстве из них они интерпретируются правильно, но есть проблема с одним, в котором интерпретируются только некоторые, а некоторые нет.
Вот часть этого pom.xml:

<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.blah.as.services</groupId>
<artifactId>moc-sbb</artifactId>
<version>1.0.1</version>
<packaging>jainslee-sbb-jar</packaging>
<name>AS :: services :: MOC-SBB</name>

<parent>
    <groupId>com.blah.as.services</groupId>
    <artifactId>moc</artifactId>
    <version>1.0.1</version>
</parent>

<dependencies>
    <dependency>
        <groupId>opencloud</groupId>
        <artifactId>diameter-ro-ra-type</artifactId>
        <version>${diameterro.ra.version}</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>opencloud</groupId>
        <artifactId>oc-common</artifactId>
        <version>${cgin.oc-common.version}</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>opencloud</groupId>
        <artifactId>in-datatypes</artifactId>
        <version>${cgin.in-datatypes.version}</version>
        <scope>provided</scope>
    </dependency>
...
    <dependency>
        <groupId>opencloud</groupId>
        <artifactId>map_rel4.ratype</artifactId>
        <version>${cgin.ra.version}</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>com.blah.as</groupId>
        <artifactId>correlation-ra-ratype</artifactId>
        <version>1.0</version>
        <type>jainslee-ratype-jar</type>
    </dependency>
</project>

Все свойства, начинающиеся с 'cgin', не интерпретируются в этом pom.xml (работа отлично в других модулях), другие свойства в порядке.

Вся сборка работала отлично, но недавно нам пришлось изменить версию модулей, поэтому изменение коснулось текущей версии модуля, версии родительского модуля и версии некоторых зависимостей, но это были только локальные зависимости с явно написанной версией.

Кто-нибудь сталкивался с такой проблемой или знает, где искать причину такой ситуации?

ш
Lucja

edit1
Я использовал mvn -X -U clean install для более подробного изучения сборки и не обнаружил существенных ошибок, единственное, что я обнаружил, - это то, что в некоторых модулях есть выражение «свойства использованы», а в некоторых нет, проблемное Модуль также не имеет его. Я не знаю, как это повлияет на этот модуль, потому что только некоторые свойства не читаются, а некоторые - нет.

[DEBUG] properties used {... cgin.oc-common.version=1.3.0, ... cgin.ra.version=1.3.2, ... cdr.ra.version=2.1.1.0, ... diameterro.ra.version=2.2.0.1, ... cgin.in-datatypes.version=5.1.3.2, ...}

edit2
Вот весь pom.xml для модуля 'moc'

 <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.blah.as.services</groupId>
<artifactId>moc</artifactId>
<version>1.0.1</version>
<packaging>pom</packaging>
<name>AS :: services :: MOC</name>

<parent>
    <groupId>com.blah.as.services</groupId>
    <artifactId>services</artifactId>
    <version>1.0.1</version>
</parent>

<modules>
    <module>moc-sbb</module>
    <module>moc-du</module>
</modules>
</project>  

и для услуг модуля

<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.blah.as.services</groupId>
<artifactId>services</artifactId>
<version>1.0.1</version>
<packaging>pom</packaging>
<name>AS :: services</name>

<parent>
    <groupId>com.blah.as.common</groupId>
    <artifactId>caoas</artifactId>
    <version>1.0.0</version>
</parent>

<modules>
    <module>moc</module>
    <module>ussd</module>
</modules>
</project>  

Структура модуля в этом случае выглядит следующим образом:
caoas (корень)
|
услуги
|
MOC
|
moc-sbb

Вот пример для другого модуля, в котором свойства работают нормально (структура показана от корневого до конечного узла)

<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.blah.as.common</groupId>
<artifactId>common</artifactId>
<version>1.0.1</version>
<packaging>pom</packaging>
<name>AS :: Common</name>
<parent>
    <groupId>com.blah.as.common</groupId>
    <artifactId>caoas</artifactId>
    <version>1.0.1</version>
</parent>

<modules>
            <module>lib</module>
    <module>ra</module>
    <module>utils</module>
    <module>patches</module>    
</modules>

<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.blah.as.common</groupId>
<artifactId>common-lib</artifactId>
<version>1.0.1</version>
<packaging>pom</packaging>
<name>AS :: Common :: libs</name>

<parent>
    <groupId>com.blah.as.common</groupId>
    <artifactId>common</artifactId>
    <version>1.0.1</version>
</parent>

<modules>

    <module>base</module>
    <module>tracing</module>
    <module>commons</module>
    <module>diameter-ro-ext</module>
    <module>location-retrieval</module>
    <module>normalization</module>
    <module>ticketing</module>
    <module>profiles</module>
    <module>notifications</module>
    <module>screening</module>
    <module>soap-tools</module>
    <module>fsm</module>
    <module>xmlbeans</module>
    <module>sccp-address-selection</module>
</modules>

<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.blah.as.common</groupId>
<artifactId>location-retrieval</artifactId>
<version>1.0.1</version>
<packaging>pom</packaging>
<name>AS :: Common :: Location Retrieval</name>

<parent>
    <groupId>com.blah.as.common</groupId>
    <artifactId>common-lib</artifactId>
    <version>1.0.1</version>
</parent>

<modules>
    <module>location-retrieval-profiles-api</module>       
    <module>location-retrieval-intf-lib</module>
    <module>location-retrieval-sbb-jar</module>
    <module>location-retrieval-du</module>
</modules>

<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>
<parent>
    <groupId>com.blah.as.common</groupId>
    <artifactId>location-retrieval</artifactId>
    <version>1.0.1</version>
</parent>

<groupId>com.blah.as.common</groupId>
<artifactId>location-retrieval-sbb-jar</artifactId>
<version>1.0.1</version>
<packaging>jainslee-sbb-jar</packaging>
<name>AS :: Common :: Location Retrieval SBB</name>


<dependencies>

    <dependency>
        <groupId>com.blah.as.common</groupId>
        <artifactId>base-api</artifactId>
        <version>1.0.1</version>
    </dependency>

    <dependency>
        <groupId>com.blah.as.common</groupId>
        <artifactId>location-retrieval-intf-lib</artifactId>
        <version>1.0.1</version> 
    </dependency>

    <dependency>
        <groupId>com.blah.as.common</groupId>
        <artifactId>location-retrieval-profiles-api</artifactId>
        <version>1.0.1</version>
    </dependency>


    <dependency>
        <groupId>opencloud</groupId>
        <artifactId>oc-common</artifactId>
        <version>${cgin.oc-common.version}</version>
    </dependency>
    <dependency>
        <groupId>opencloud</groupId>
        <artifactId>in-datatypes</artifactId>
        <version>${cgin.in-datatypes.version}</version>
    </dependency>
    <dependency>
        <groupId>opencloud</groupId>
        <artifactId>cgin-common.ratype</artifactId>
        <version>${cgin.ra.version}</version>
    </dependency>
    <dependency>
        <groupId>opencloud</groupId>
        <artifactId>cgin-common.events</artifactId>
        <version>${cgin.ra.version}</version>
    </dependency>
    <dependency>
        <groupId>opencloud</groupId>
        <artifactId>cgin-common</artifactId>
        <version>${cgin.ra.version}</version>
    </dependency>
    <dependency>
        <groupId>opencloud</groupId>
        <artifactId>map_rel4.api</artifactId>
        <version>${cgin.ra.version}</version>
    </dependency>
    <dependency>
        <groupId>opencloud</groupId>
        <artifactId>map_rel4.events</artifactId>
        <version>${cgin.ra.version}</version>
    </dependency>
    <dependency>
        <groupId>opencloud</groupId>
        <artifactId>map_rel4.ratype</artifactId>
        <version>${cgin.ra.version}</version>
    </dependency>
    <dependency>
        <groupId>com.blah.as.common</groupId>
        <artifactId>base-tracing-intf</artifactId>
        <version>1.0.1</version>
        <type>jar</type>
    </dependency>
</dependencies>

Он использует те же свойства, и здесь они работают нормально.

Ответы [ 3 ]

0 голосов
/ 20 июля 2011

Похоже, ваш дочерний модуль ссылается на неправильный родительский POM. В родительском POM вы объявили artifactId как 'caoas':

<artifactId>caoas</artifactId>

Но в вашем дочернем POM вы ссылаетесь на другого родителя с artifactId 'moc':

<parent>
  <groupId>com.blah.as.services</groupId>
  <artifactId>moc</artifactId>
  <version>1.0.1</version>
</parent>
0 голосов
/ 20 июля 2011

Ваш поставщик услуг ссылается на com.blah.as.common: caoas: 1.0.0 в качестве родителя.В своем посте вы показали нам версию 1.0.1, а не 1.0.0.Возможно, свойство не существует в версии 1.0.0?

0 голосов
/ 20 июля 2011

Я всегда определяю версии зависимостей в root pom. И не определять версии в дочерних проектах. Дочерние проекты по умолчанию получают версии зависимостей от родительского pom.

E. г.

Родительский пом:

...
<groupId>ba.server</groupId>
<artifactId>ba-server</artifactId>
<packaging>pom</packaging>
<name>ba-server</name>
<version>0.16.22-SNAPSHOT</version>
<dependencyManagement>
    <dependencies>

    <dependency>
        <groupId>org.zeromq</groupId>
        <artifactId>jzmq</artifactId>
        <version>2.1.0-SNAPSHOT</version>
    </dependency>
    <dependency>
        <groupId>proxool</groupId>
        <artifactId>proxool </artifactId>
        <version>0.8.3</version>
    </dependency>
...

Детская комната:

...
<parent>
    <groupId>ba.server</groupId>
    <artifactId>ba-serer</artifactId>
    <version>0.16.22-SNAPSHOT</version>
</parent>
<packaging>jar</packaging>
<modelVersion>4.0.0</modelVersion>
<artifactId>ba-server-kernel</artifactId>
<name>ba-server-kernel</name>
<dependencies>
   <dependency>
        <groupId>org.zeromq</groupId>
        <artifactId>jzmq</artifactId>
    </dependency>
...
...