关于这个问题,有很好的SO question and answers,但这些选项对我不起作用。
我想将变量传递给app context:
<bean class="blah.blah.Blah" id="blah">
<property name="first" value="${first.property}"/>
<property name="second" value="${second.property}"/>
</bean>
我在Maven的settings.xml
文件中有以下内容:
<profiles>
<profile>
<id>profileId</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<first.property>first value</first.property>
<second.property>second value</second.property>
</properties>
我试过this option(这有点奇怪),但没有给出任何结果。比我添加这个插件:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>properties-maven-plugin</artifactId>
<version>1.0-alpha-2</version>
<executions>
<execution>
<phase>process-resources</phase>
<goals>
<goal>write-project-properties</goal>
</goals>
<configuration>
<outputFile>
src/main/resources/maven.properties
</outputFile>
</configuration>
</execution>
</executions>
</plugin>
之后项目中没有任何maven.properties
个文件。如果我创建了空文件,则不会出现任何内容。我尝试用-PprofileId
重复这些步骤,但没有帮助。有人可以提供一个工作代码片段或告诉我在这里我想念的是什么?提前谢谢。
更新:我错了,properties-maven-plugin
工作正常。
答案 0 :(得分:1)
我不清楚你的问题 - 但是如果你尝试运行mvn -PprofileId resources:resources
,属性插件将无法运行,因为该命令正在执行单个目标,而不是Maven生命周期阶段。如果您运行mvn -PprofileId process-resources
会怎样?
另一个问题是,其他任何个人资料都有效吗? activeByDefault
并不意味着“永远活跃”。每Maven docs“默认情况下,当在命令行或其激活配置中激活POM中的配置文件时,将自动停用所有处于活动状态的配置文件。”因此,如果您有其他个人资料处于活动状态,则profileId
的个人资料不会显示。
尝试从该配置文件中删除激活块并运行mvn -PprofileId process-resources
。