Свойство Maven settings.xml не разрешено в транзитивной зависимости - PullRequest
1 голос
/ 18 мая 2011

У меня есть свойство в settings.xml,

fwk.version = "2.0.001"

Другая сторона, мультипроект с двумя проектами, earmodule и ejbmodule.

ejbmodule имеет зависимость:

    <dependency>
        <groupId>shared-lib</groupId>
        <artifactId>proxi2.fwk.comuns</artifactId>
        <version>${fwk.version}</version>
        <type>pom</type>
    </dependency>

и все работает правильно

но earmodule зависит от ejbmodule

<dependencies>
    <dependency>
        <groupId>projectGroup</groupId>
        <artifactId>ejbmodule</artifactId>
        <version>1.0</version>
        <type>ejb</type>
    </dependency>
</dependencies>

и он пытается разрешить зависимость, но не удается:

[ПРЕДУПРЕЖДЕНИЕ] Отсутствует POM для shared-lib: proxi2.fwk.comuns: pom: $ {fwk.version}

вместо того, чтобы пытаться загрузить

общий Пб: proxi2.fwk.comuns: POM: 2.0.001

Это происходит, когда я пытаюсь упаковать родительский проект.

Похоже на ошибку в Maven3

Знаете почему?

Thx

EDIT:

Наше решение / обходной путь определяли в родительском pom раздел dependencyManagement, потому что на этом уровне все работает нормально.

Затем в подпроекте ejbmodule мы имеем зависимость «независимая версия», потому что использует определение родителя в dependencyManagement

settings.xml:

<fwk.version>2.0.001</fwk.version>

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

<dependencyManagement>
    <dependency>
        <groupId>shared-lib</groupId>
        <artifactId>proxi2.fwk.comuns</artifactId>
        <version>${fwk.version}</version>
        <type>pom</type>
    </dependency>
</dependencyManagement>

ejbmodule pom:

<dependency>
    <groupId>shared-lib</groupId>
    <artifactId>proxi2.fwk.comuns</artifactId>
    <type>pom</type>
</dependency>

Надеюсь, это поможет другим

Ответы [ 3 ]

1 голос
/ 18 мая 2011

Похоже, есть ошибка open maven, связанная с этим.

0 голосов
/ 24 ноября 2018

После того, как эта проблема возникла из-за ошибки в Maven и, по-видимому, вскоре ее не исправят, я нашел простой обходной путь, который мне подходит.

Вместо этого определение переменной с помощьюнотация с точкой, например, fwk.version, попробуйте случай со змеей, например, fwk_version.Я попытался сделать это в своем файле settings.xml url репозиториев, и он работает.

Ссылка: я нашел это в этом посте http://maven.40175.n5.nabble.com/Settings-properties-not-resolved-when-used-in-repository-element-td5746974.html

Надеюсь, это может помочь и в переходных зависимостях

0 голосов
/ 19 августа 2011

Я вижу похожую проблему только в другой ситуации.Я использовал свойство, чтобы определить URL-адрес, куда отправлять мои созданные javadocs, такие как

<distributionManagement>
    <site>
        <id>javadocs</id>
        <name>Java Documentation</name>
        <url>scp://${javadocs.url}/${project.groupId}/${project.artifactId}/${project.version}</url>
    </site>
</distributionManagement>

И, конечно, я установил свойство в файле settings.xml в профиле

</settings>
    .
    .
    <profiles>
        <profile>
            <id>develop</id>
            <properties>
                <environment.type>develop</environment.type>
                <javadocs.url>javadocs.server.com/home/javadocs/javadocs</javadocs.url>
            </properties>
            .
            .
    <activeProfiles>
        <activeProfile>develop</activeProfile>
    </activeProfiles>
</settings>

.distributionManagement раздел был помещен в pom проекта parent , который использовался в качестве родителя в проекте child

При выполнении

mvn site-deploy

в проекте child я получил эту ошибку:

[ОШИБКА] Не удалось выполнить цель org.apache.maven.plugins: maven-site-plugin: 3.0: deploy (по умолчанию)-deploy) на дочернем проекте: Ошибка загрузки сайта: не удается подключиться.Причина: java.net.UnknownHostException: $ {javadocs.url} -> [Справка 1]

Так что очевидно, что свойство больше не было установлено.

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

...