使用常规Maven目录时,应该将log4j.properties文件放在哪里?
使用常规Maven目录时,应该将log4j.properties文件放在哪里?
Answers:
src/main/resources
是为此的“标准展示位置”。
更新:上面的答案,但不是最佳解决方案。查看其他答案和对此的评论……您可能不会将自己的日志记录属性与jar一起交付,而是将其留给客户端(例如,app-server,舞台环境等)来配置所需的日志记录。因此,放入它src/test/resources
是我的首选解决方案。
注意:说到将具体的日志配置留给客户端/用户,您应该考虑在应用中替换log4j
为slf4j
。
resources
并log4j.properties
在答案中提到的文件夹中。
src/main/resources
默认情况下,以下文件会被复制到target/classes
只需将其放入即可src/main/resources
将其捆绑在工件中。例如,如果您的工件是一个JAR,您将在其中log4j.properties
包含文件,从而失去了使日志可配置的最初目的。
我通常将其放在中src/main/resources
,并将其设置为输出到目标,如下所示:
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<targetPath>${project.build.directory}</targetPath>
<includes>
<include>log4j.properties</include>
</includes>
</resource>
</resources>
</build>
另外,为了使log4j实际看到它,您必须将输出目录添加到类路径。如果您的工件是可执行的JAR,则可能使用了maven-assembly-plugin来创建它。在该插件内,您可以通过添加Class-Path
清单项来将JAR的当前文件夹添加到类路径,如下所示:
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>com.your-package.Main</mainClass>
</manifest>
<manifestEntries>
<Class-Path>.</Class-Path>
</manifestEntries>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id> <!-- this is used for inheritance merges -->
<phase>package</phase> <!-- bind to the packaging phase -->
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
现在,log4j.properties文件将位于您的JAR文件旁边,可以独立配置。
要直接从Eclipse运行应用程序,请将resources
目录添加到运行配置中的类路径中:Run->Run Configurations...->Java Application->New
选择Classpath
选项卡,选择Advanced
并浏览到src/resources
目录。
${project.build.directory}
或者应将其编辑为项目在本地驱动器中的实际路径?
一些“数据挖掘”解释了这src/main/resources
一点。
结果于 Google代码搜索:
src/main/resources/log4j.properties
:4877src/main/java/log4j.properties
:215 resources
也不resource
是。
resource
只是一个错字。
用于初始化项目的资源最好放在src / main / resources文件夹中。要在构建过程中加载这些资源,只需在maven项目的pom.xml中添加条目即可作为构建资源
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
其他.properties文件也可以保留在此文件夹中,用于初始化。如果要在资源文件夹的属性文件中包含一些变量并从配置文件过滤器属性文件中填充变量,则将过滤设置为true,这些文件保存在设置为配置文件的 src / main / filters中但完全是另一种用例。现在,您可以忽略它们。
这是一个很棒的资源maven资源插件,它很有用,也可以浏览其他部分。
在pom.xml的build标记内,从resources标记添加以下代码。所以这意味着资源标签必须在pom.xml中的build标签内
<build>
<resources>
<resource>
<directory>src/main/java/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
<build/>