我有一个典型的Maven项目结构,simplelogger.properties
文件在类路径上:
+MyProject
`-- src
|-- main/java/com.mypackage.MyClass
`-- resources
`-- simplelogger.properties
这在IDE中可以完美地工作,因为正确的SimpleLogger配置已经在类路径上了。我想在打包完成的.jar中有另一个simplelogger.properties
文件(输出到file而不是输出到System.out)。
是否有一种方法来取代simplelogger.properties
上的类路径文件与另一个simplelogger.properties
文件从其他地方与Maven打包时。jar?
这在某种程度上是一个X-Y问题。我建议这样做:
有两个模块。将您的simplelogger配置文件放在类路径的test部分。这将确保它不会进入生成的jar(这是当前问题的主要原因)。
然后有一个部署模块,它以您需要的形式将部署配置文件从上面添加到您的工件中。当您需要多个部署时,只需为每个部署创建一个模块。如果您的jar文件已经构建,您可以覆盖您的属性:
java -jar myjar.jar --spring.config.location=D:wherevernew-logger.properties
但是,我检查了Spring Boot项目。
你可以在这里查看更多信息:
- 外部化配置
在运行应用程序时,可以将simplelogger.properties
文件放在程序的类路径或工作目录中。
`-- work-dir
|-- myApp.jar
`-- simplelogger.properties
如果您的应用程序在IDE中正常运行,并且在打包时不能正常运行,则可能您的JAR文件不包含资源。在这种情况下,您可以在pom.xml
文件中使用以下配置将资源复制到JAR文件中。
<configuration>
<outputDirectory>${basedir}/target/classes</outputDirectory>
<includeEmptyDirs>true</includeEmptyDirs>
<resources>
<resource>
<directory>${basedir}/src/customize</directory>
<filtering>false</filtering>
</resource>
<resource>
<directory>${basedir}/src/resources</directory>
<filtering>false</filtering>
</resource>
</resources>
</configuration>