【问题标题】:Maven jar plugin looking for non-existent log4j file寻找不存在的 log4j 文件的 Maven jar 插件
【发布时间】:2016-12-17 00:19:59
【问题描述】:

我的项目没有引用 C:\log4j-application.log 的 log4j 配置文件,但 maven 出现错误,因为它不存在。这是在linux系统上。 “mvn package”命令出错:

 Reactor Summary:
[INFO] 
[INFO] a ............................................. SUCCESS [  0.943 s]
[INFO] b ............................................. SUCCESS [  8.659 s]
[INFO] c ............................................. SUCCESS [  4.295 s]
[INFO] d ............................................. SUCCESS [  2.867 s]
[INFO] e ............................................. FAILURE [  0.093 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 17.071 s
[INFO] Finished at: 2016-12-16T17:53:42-06:00
[INFO] Final Memory: 48M/1029M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-jar-plugin:2.4:jar (default-jar) on project web: Error assembling JAR: C:\log4j-application.log not found. -> [Help 1]

父 pom.xml(模块 e 的 pom 没有构建/执行/包信息,只有依赖项):

<?xml version="1.0" encoding="UTF-8"?>
<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>foo</groupId>
    <artifactId>parent</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>

    <modules>
        <module>../b</module>
        <module>../e</module>
        <module>../d</module>
        <module>../e</module>
    </modules>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>1.2.17</version>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.5.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <optimize>true</optimize>
                    <debug>true</debug>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>2.3</version>
                <configuration>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                    <finalName>all-in-one</finalName>
                    <appendAssemblyId>false</appendAssemblyId>
                    <archive>
                        <manifest>
                            <mainClass>Main</mainClass>
                        </manifest>
                    </archive>
                </configuration>
                <executions>
                    <execution>
                        <id>build-jar-with-dependencies</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>


</project>

我的应用中的典型 log4j.properties:

# Root logger option
log4j.rootLogger=DEBUG, stdout, file

# Redirect log messages to console
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

# Redirect log messages to a log file, support file rolling.
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.MaxFileSize=5MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

org.jooq.Constants.level=WARNING
~                                

是什么原因造成的?到目前为止尝试过:

  • mvn clean,删除 .m2/repository
  • 从模块 e 中删除 log4j
  • 大量的谷歌搜索

【问题讨论】:

  • 如果模块 e 失败,为什么要显示父 pom 而不是模块 e 的 pom?
  • 路径 "C:\log4j-application.log" 对于 linux 系统来说似乎很奇怪?
  • @kdgregory module e 的 pom 只有依赖信息,没有任何我认为可能导致问题的 maven-jar 配置或其他构建细节。父母有,所以我认为这可能会有所帮助。如果您认为单独的依赖项列表可能会导致问题,我可以添加它。
  • @RajindRuparathna 同意。可能有一个 log4j 默认值我需要用 linux 路径覆盖?不过,在 Google 搜索中还没有看到类似的内容。
  • 可以添加模块 e pom 文件吗?

标签: java maven logging jar log4j


【解决方案1】:

好吧,这绝对是我的疏忽。在 e/src/main/resources 中有一个名为 C:\log4j-application.log 的挥之不去的文件导致了该问题。一旦它被删除,我运行了一个 maven clean 一切都按预期工作。

我认为我开始使用的 log4j 配置将文件设置为 C:\log4j-application.log,然后我开始收到错误,因为它不存在。好吧,当时我在几个位置使用touch 创建了一个具有该名称的文件以绕过错误,但我从未删除所有这些文件。这是一个空文件,所以我的grep -R log4j-application . 命令从未找到它(我期待某个配置文件引用了该文件)。掌心。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-27
    • 1970-01-01
    • 2016-06-01
    • 1970-01-01
    • 2011-12-09
    • 2017-10-04
    • 1970-01-01
    相关资源
    最近更新 更多