我必须使用所有依赖项和log4j.properties文件构建jar文件。
我在stackoverflow上搜索答案,但没有运气。
现在我正在构建包含所有依赖项的jar,但我现在不知道如何告诉maven将log4j.properties文件移动到ma * .jar文件中的META-INF目录。
我的pom的一部分,它生成带依赖关系的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>
为了让jar包含所有依赖项和log4j.properties文件,我该怎么做?
答案 0 :(得分:2)
不捆绑日志文件是正常的,因为您的用户可能希望单独/外部配置它。我已经在resources文件夹中构建了一个带有一个主类和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!
答案 1 :(得分:1)
您可以使用Maven Antrun Plugin编写一个将在maven的生命周期阶段执行的ant脚本。
答案 2 :(得分:0)
只需将log4j.properties
放在src/main/resources/META-INF
下。
答案 3 :(得分:0)
我的问题是连接到pom和a:中资源标记中的targetPath元素:
<resources>
<resource>
<targetPath>${project.build.directory}/</targetPath>
<directory>src/main/java</directory>
<includes>
<include>*.properties</include>
</includes>
</resource>
</resources>
我必须做的就是删除这个targetPath元素。感谢您的时间,感谢抱歉不要粘贴所有内容。
答案 4 :(得分:0)