传递依赖项中未解析Maven settings.xml属性

时间:2011-05-18 09:50:31

标签: maven dependencies settings

我在settings.xml中有一个属性,

  

fwk.version =“2.0.001”

另一方面,一个包含两个项目的多项目,耳模块和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:proxi2.fwk.comuns:pom:$ {fwk.version}

而不是试图下载

共享-LIB:proxi2.fwk.comuns:POM:2.0.001

当我尝试打包父项目时会发生这种情况。

看起来像是Maven3中的一个错误

你知道为什么吗?

THX

修改

我们的解决方案/解决方法已在父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 个答案:

答案 0 :(得分:1)

看起来有一个与此相关的open maven错误。

答案 1 :(得分:0)

我只在不同的情况下看到类似的问题。我使用了一个属性来定义一个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中,该项目在项目子项

中用作父项

做的时候

mvn site-deploy

项目中出现此错误:

  

[错误]无法执行目标   org.apache.maven.plugins:maven-site-plugin:3.0:deploy(default-deploy)   on project child:上传站点时出错:无法连接。原因:   java.net.UnknownHostException:$ {javadocs.url} - &gt; [帮助1]

很明显,该物业已不再存在。

我能想到的唯一解决方法是将属性放在父pom中。我知道这很糟糕,因为如果你想改变它们,你需要重新部署。

答案 2 :(得分:0)

此问题似乎是由于Maven的错误引起的,并且显然预计不会很快得到解决,因此,我发现了一个简单的解决方法,似乎对我有用。

而不是使用点表示法(例如fwk.version)定义变量,请尝试使用类似fwk_version的蛇形情况。我尝试在存储库的settings.xml网址中使用tp define来运行它。

参考:我在这篇帖子http://maven.40175.n5.nabble.com/Settings-properties-not-resolved-when-used-in-repository-element-td5746974.html

中发现了这一点

我希望它也可以帮助传递依赖项。