当使用传统的 Maven 目录时,我应该将 log4j.properties 文件放在哪里?
src/main/resources 是这个的“标准放置”。
src/main/resources
更新: 以上回答了这个问题,但并不是最好的解决方案。查看其他的答案和相关的评论... ... 您可能不会使用 jar 来提供您自己的日志属性,而是将它留给客户机(例如 app-server、 stage Environment 等)来配置所需的日志。因此,把它放在 src/test/resources是我的首选解决方案。
src/test/resources
注意: 说到将具体的日志配置留给客户机/用户,您应该考虑在应用程序中用 slf4j替换 log4j。
slf4j
log4j
一些“数据挖掘”说明 src/main/resources是典型的地方。
谷歌代码搜索测试结果:
当把资源文件放在另一个位置不是最好的解决方案时,你可以使用:
<build> <resources> <resource> <directory>src/main/java</directory> <excludes> <exclude>**/*.java</exclude> </excludes> </resource> </resources> <build>
例如,当资源文件(例如 jaxb.properties)与 Java 类一起深入到包的内部时。
用于初始化项目的资源最好放在 Src/main/resources文件夹中。要在构建期间加载这些资源,只需在 maven 项目的 pom.xml 中添加条目作为构建资源
<build> <resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> </resource> </resources> </build>
其他. properties 文件也可以保存在这个用于初始化的文件夹中。 如果您希望在资源文件夹的属性文件中包含一些变量,并从配置文件过滤器属性文件中填充它们,过滤器属性文件保存在 src/main/filter 中,设置为 资料,但这是完全不同的用例。现在,你可以无视他们。
这是一个伟大的资源 Maven 资源插件,它是有用的,只是浏览其他部分了。
只要将其放入 src/main/resources中,就可以将其绑定到工件中。例如,如果您的工件是一个 JAR,您将在其中包含 log4j.properties文件,从而失去了使日志记录可配置的初始点。
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 的当前文件夹添加到类路径:
Class-Path
<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目录。
resources
Run->Run Configurations...->Java Application->New
Classpath
Advanced
src/resources
如果在 src/main/resources 下找不到 log4j.properties 或 log4j.xml 文件,请使用这个 PropertyConfigurator.configure (“ log4j.xml”) ;
PropertyConfigurator.configure("log4j.xml"); Logger logger = LoggerFactory.getLogger(MyClass.class); logger.error(message);
将下面的代码从构建标记中的 pom.xml 中的 resources 标记添加到构建标记中。 所以它意味着资源标记必须位于 pom.xml 中的 build 标记内部
<build> <resources> <resource> <directory>src/main/java/resources</directory> <filtering>true</filtering> </resource> </resources> <build/>