일반적인 Maven 디렉토리를 사용할 때 log4j.properties 파일을 어디에 두어야합니까?
답변
src/main/resources
“표준 게재 위치”입니다.
최신 정보: 위의 질문에 대답하지만 최선의 해결책은 아닙니다. 다른 답변과 이에 대한 의견을 확인하십시오 … 자신의 로깅 속성을 jar와 함께 제공하지 않고 대신 원하는 로깅을 구성하기 위해 클라이언트 (예 : app-server, stage environment 등)에 남겨 두십시오. 따라서 그것을 넣는 것이 src/test/resources
내가 선호하는 솔루션입니다.
참고 : 구체적 로그 구성을 클라이언트 / 사용자에게 남겨 두 려면 앱에서로 대체 log4j
를 고려해야 slf4j
합니다.
답변
그것을 넣는 것만으로 그것을 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을 사용하여 생성 한 JAR 일 수 있습니다. 해당 플러그인 내에서 다음 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
디렉토리 를 선택 하고 찾아보십시오 .
답변
이를위한 일부 “데이터 마이닝” src/main/resources
이 일반적인 장소입니다.
Google 코드 검색 결과 :
src/main/resources/log4j.properties
: 4877src/main/java/log4j.properties
: 215
답변
프로젝트를 초기화하는 데 사용되는 리소스는 src / main / resources 폴더에 저장하는 것이 좋습니다. 빌드하는 동안 이러한 리소스를로드 할 수 있도록 maven 프로젝트의 pom.xml에 항목을 빌드 리소스로 간단하게 추가 할 수 있습니다
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
다른 .properties 파일도 초기화에 사용되는이 폴더에 보관할 수 있습니다. 자원 폴더의 특성 파일에 일부 변수가 있고 프로파일 필터 특성 파일에서 변수를 채우려면 프로파일이 설정됩니다. 이는 src / main / filters에 프로파일 로 설정되어 있지만 다른 사용 사례입니다. . 지금은 무시해도됩니다.
이것은 훌륭한 리소스 maven 리소스 플러그인 이며 유용합니다. 다른 섹션도 찾아보십시오.
답변
다른 위치에 리소스 파일을 넣는 것이 최선의 해결책은 아닙니다.
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<excludes>
<exclude>**/*.java</exclude>
</excludes>
</resource>
</resources>
<build>
예를 들어 자원 파일 (예 : jaxb.properties)이 Java 클래스와 함께 패키지 내부로 들어가는 경우.
답변
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>
<resources>
<resource>
<directory>src/main/java/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
<build/>