2016-12-17 80 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 .命令從來沒有找到它(我期待一些配置文件引用該文件)。捂臉。