2013-02-21 4 views
2

jar 파일을 모든 종속성 및 log4j.properties 파일로 빌드해야합니다.모든 의존성 및 log4j.properties 파일이 포함 된 Maven jar

나는 stackoverflow에 대한 답변을 찾고 있었지만 행운은 없었다.

지금은 모든 종속성을 가진 항아리를 만들지 만 log4j.properties 파일을 ma * .jar 파일의 META-INF 디렉토리로 이동하는 방법을 maven에게 어떻게 전달할 수 있습니까? 내 치어의

부분, 즉 종속 항아리를 생성

    <plugin> 
         <artifactId>maven-assembly-plugin</artifactId> 
         <executions> 
          <execution> 
           <phase>install</phase> 
           <goals> 
            <goal>single</goal> 
           </goals> 
          </execution> 
         </executions> 
         <configuration> 
          <archive> 
           <manifest> 
            <mainClass>MainClass</mainClass> 
           </manifest> 
          </archive> 
          <descriptorRefs> 
           <descriptorRef>jar-with-dependencies</descriptorRef> 
          </descriptorRefs> 
         </configuration> 
        </plugin> 

내가 모든 종속성과 log4j.properties이 파일 항아리를하기 위해 어떻게해야합니까?

+0

파일은 현재 프로젝트 구조에서 어디에 있습니까? – Romski

+0

log4j.properties는 src/main/resources에 있습니다. – wojtek88

답변

1

Maven Antrun Plugin을 사용하면 maven의 라이프 사이클 단계에서 실행할 ant 스크립트를 작성할 수 있습니다.

2

로깅 파일을 사용자가 별도로/외부 적으로 구성해야하는 경우에는 번들하지 않는 것이 일반적입니다. 하나의 메인 클래스와 log4j가 리소스 폴더에있는 간단한 프로젝트를 만들었으며 Netbeans에서 작동합니다.

의 pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>com.mycompany</groupId> 
    <artifactId>log4j-sample</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <packaging>jar</packaging> 

    <name>log4j-sample</name> 
    <url>http://maven.apache.org</url> 

    <properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    </properties> 

    <dependencies> 
    <dependency> 
     <groupId>log4j</groupId> 
     <artifactId>log4j</artifactId> 
     <version>1.2.17</version> 
    </dependency> 
    </dependencies> 
</project> 

SRC는/주/COM/mycompany/log4jsample/App.java

package com.mycompany.log4jsample; 

import org.apache.log4j.LogManager; 
import org.apache.log4j.Logger; 

/** 
* Hello world! 
* 
*/ 
public class App { 
    private static Logger logger = LogManager.getLogger("HelloWorld"); 

    public static void main(String[] args) { 
     logger.info("Hello, World!"); 
    } 
} 

/src/main/resources/log4j.properties

# To change this template, choose Tools | Templates 
# and open the template in the editor. 

log4j.rootLogger=DEBUG, CONSOLE 
#log4j.rootLogger=INFO, FILE 

log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender 
log4j.appender.CONSOLE.Target=System.err 
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout 
log4j.appender.CONSOLE.layout.conversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p - %m%n 

출력

2013-02-22 00:27:39,518 INFO - Hello, World! 
0

은 단순히 log4j.propertiessrc/main/resources/META-INF 아래에 넣어.

0

내 문제는 자원의 치어의 태그와에있는 TargetPath 요소에 연결되었습니다

<resources> 
     <resource> 
      <targetPath>${project.build.directory}/</targetPath> 
      <directory>src/main/java</directory> 
      <includes> 
       <include>*.properties</include> 
      </includes> 
     </resource> 
    </resources> 

내가해야 할 일을했을 모든이있는 TargetPath 요소를 제거했다. 시간을 내 주셔서 감사 드리며 모든 것을 붙여 넣지 않아서 유감입니다.

관련 문제