2013-02-21 82 views
2

我必須建立jar文件具有所有依賴性和log4j.properties文件。Maven的罐子所有的依賴和log4j.properties文件

我正在尋找的計算器,但沒有運氣的答案。

現在我正在構建具有所有依賴關係的jar,但是現在我不知道如何告訴maven將log4j.properties文件移動到ma * .jar文件中的META-INF目錄中。我的聚甲醛的

部分,其產生與依賴的jar:

    <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 2013-02-21 12:35:56

+0

log4j.properties位於src/main/resources中 – wojtek88 2013-02-21 12:57:39

回答

1

可以使用Maven Antrun Plugin寫一個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元素在POM資源標籤和:

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

我不得不這樣做,是刪除此TARGETPATH元素。感謝您的時間夥計,並抱歉沒有粘貼所有內容。