我正在尝试使用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文件中根本不可用。
答案 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>