2016-09-21 93 views
0

我有logback.properties文件,其中包含以下属性。如何从属性文件中访问POM项目名称

#logging 
logging.server= 
logging.port= 
logging.path=/opt/${project.name}/logs 

里面我POM文件我已经得到了<name>标签,指定项目名称。我想在上面的lockback之类的几个属性文件中注入此名称。执行上述操作会创建一个名为project.name_IS_UNDEFINED的文件夹。有没有可能访问项目名称,以及如何?

UPDATE 拉尔夫给出了正确的答案,但检查我的意见,因为春季启动应用程序,你需要使用%project.name%代替${project.name}

+0

可能的复制http://stackoverflow.com/questions/4107222/can-i-inject-properties-from-maven-passwords-defined-in-settings-xml-into-my-s –

+0

@ A_Di-Matteo不是。 –

回答

1

你需要在你Maven的编译时间脚本在运行时将应用程序转移定义的属性。

最简单的方法是使用maven's resource filtering(这个名字有点误导,它不是选择文件的筛选器,它是一个属性替换为文本/资源文件)为了让行家取代${project.name}在你的logback .properties文件。

真正 $ {BASEDIR}/src目录/主/资源

如果你想实现资源的过滤只是一个文件(而不是为别人,以防止更换其他标记行家,那么你可以使用这个片段:的

<resources> 
    <!-- enable filtering for logback.properties only --> 
    <resource> 
     <filtering>false</filtering> 
     <directory>${basedir}/src/main/resources</directory> 
     <includes> 
      <include>**/*</include> 
     </includes> 
     <excludes> 
      <exclude>WHEREVER_LOCATED/logback.properties</exclude> 
     </excludes> 
    </resource> 
    <resource> 
     <filtering>true</filtering> 
     <directory>${basedir}/src/main/resources</directory> 
     <includes> 
      <include>WHEREVER_LOCATED/logback.properties</include> 
     </includes> 
    </resource> 
</resources> 
+0

谢谢,拉尔夫。你的回答帮助我,因为我错了唱过滤:)。但是因为我正在开发一个弹簧启动应用程序,所以这并没有完全解决我的问题。相反,我不得不使用%project.name%请参阅http://stackoverflow.com/questions/36501017/maven-resource-filtering-not-working- because-of-spring-boot-dependency。 –