从settings.xml访问项目属性

时间:2011-09-16 20:34:36

标签: maven properties settings

我正在尝试使用pom的groupId的值在settings.xml中激活配置文件。为了实现这一点,我有:

<settings>
    <profiles>
      <profile>
    <id>imf</id>
    <activation>
      <property>
        <name>project.groupId</name>
        <value>myId</value>
      </property>
    </activation>
    <properties>
     . . .
    </properties>
      </profile>
   </profiles>
 </settings>

但这不起作用。是否无法从设置中访问项目属性? reference material说你可以。

为了验证我对属性activator元素的使用,我使用命令行中的属性集进行了一次完整性检查。实际上,如果我将-Dproject.groupId = myId传递给mvn命令行,我的激活就可以了。这让我相信项目属性在settings.xml文件中根本不可用。

2 个答案:

答案 0 :(得分:1)

看起来您的具体要求无法以您尝试的方式实现。

project.groupId作为属性名称(或键)对maven没有任何意义。 maven在${project.groupId}settings.xml中理解(并扩展)pom.xml及类似值。

答案 1 :(得分:0)

我有类似的要求 - 根据项目的groupId选择配置文件(在远程存储库之间进行选择)。然后我注意到我的groupIds实际上总是在我的java类层次结构中的包名。包名称只是文件系统中的目录。所以我对这个问题的解决方案是使用actication / file / exists标签:

  <profiles>
    <profile>
        <id>client1</id>
        <activation>
            <activeByDefault>false</activeByDefault>
            <file>
                <exists>${basedir}/src/main/java/hu/client1</exists>
            </file>
        </activation>
        <repositories>
            <repository>

            </repository>
        </repositories>
    </profile>
    <profile>
        <id>client2</id>
        <activation>
            <activeByDefault>false</activeByDefault>
            <file>
                <exists>${basedir}/src/main/java/hu/client2</exists>
            </file>
        </activation>
        <repositories>
            <repository>

            </repository>
        </repositories>
    </profile>
    <profile>
        <id>client3</id>
        <activation>
            <activeByDefault>false</activeByDefault>
            <file>
                <exists>${basedir}/src/main/java/com/client3</exists>
            </file>
        </activation>
        <repositories>
            <repository>

           </repository>
        </repositories>
    </profile>
</profiles>