2016-12-17 82 views
0

我的项目没有引用C:\ log4j-application.log的log4j配置文件,但是maven有一个错误,因为它不存在。这是在Linux系统上。从 “MVN套装” 命令 错误:寻找不存在的log4j文件的Maven jar插件

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清洁,删除.m2目录/库
  • 从模量E移除谷歌搜索的log4j
+1

如果模块'e'失败,为什么要显示父pom而不是模块'e'的pom? – kdgregory

+1

Tha路径“C:\ log4j-application.log”似乎对于linux系统来说很陌生? –

+0

@kdgregory模块e的pom只有依赖信息,而不是任何maven-jar配置或其他构建细节,我认为这可能会导致问题。家长有这个,所以我认为这可能会有所帮助。如果你认为单独的依赖列表可能会导致问题,我可以添加它。 – Matthew

回答

0

奥凯的

  • 很多这肯定是我的疏忽。在e/src/main/resources中有一个叫做C:\ log4j-application.log的文件,这个文件导致了这个问题。一旦它被删除,我运行一个maven清理一切按预期工作。

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