将Maven settings.xml文件中的属性提取到应用程序上下文

时间:2012-07-02 08:46:36

标签: maven properties settings

关于这个问题,有很好的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工作正常。

1 个答案:

答案 0 :(得分:1)

我不清楚你的问题 - 但是如果你尝试运行mvn -PprofileId resources:resources,属性插件将无法运行,因为该命令正在执行单个目标,而不是Maven生命周期阶段。如果您运行mvn -PprofileId process-resources会怎样?

另一个问题是,其他任何个人资料都有效吗? activeByDefault并不意味着“永远活跃”。每Maven docs“默认情况下,当在命令行或其激活配置中激活POM中的配置文件时,将自动停用所有处于活动状态的配置文件。”因此,如果您有其他个人资料处于活动状态,则profileId的个人资料不会显示。

尝试从该配置文件中删除激活块并运行mvn -PprofileId process-resources