在开发过程中实际上调用了maven-resources-plugin(并在代码中使用变量)?

最后发布: 2012-08-11 15:05:32


问题

我想使用来自Maven的信息在.properties文件中定义属性; 例如app.name = project.build.artifactId。

如果我在构建时调用resources:resources,它将在我的TARGET文件夹(eclipse中)中创建一个名为* .properties的文件,其中包含app.name(希望)有我的artifactId。

但是,当我通过Eclipse运行Java应用程序时,它使用的是/ target中的文件,还是使用/ src / main / resources中的版本(该文件包含变量占位符,而不是值本身)?

编辑:

这是他的代码,我希望将“过滤”值用于:

// Get project version from maven resource filtering
static {
  Properties prop = new Properties();

  try {
    // load a properties file
    prop.load(new FileInputStream("src/main/resources/project.properties"));

    // get the property value and print it out
    System.out.println(prop.getProperty("app.version"));
  }
  catch (IOException ex) {
    logger.error("Error (1): Failed to get application version from configuration file");
    System.out.println("Unexpected error (1). Aborting...");
  }
}

来自项目的POM.xml的相关信息:

<build>
  <!-- Resource filtering -->
  <resources>
    <resource>
      <directory>src/main/resources</directory>
      <filtering>true</filtering>
      <includes>
         <include>**/*.properties</include>
      </includes>
    </resource> 
  </resources>
</build>

project.properties内容:

app.version=${project.build.version}

当我通过Eclipse运行项目(不执行JAR)时,第一段的输出(在静态块中)从字面上返回“ $ {project.build.version}”。 它实际上并不返回项目标签的值。

我什至尝试运行resources:resources首先查看它是否有作用,但没有。 资源过滤是如何工作的?或者,更好的是,您实际上应该何时使用它?

java properties eclipse-juno maven-resources-plugin