2016-12-17 2 views
0

В моем проекте нет файла конфигурации log4j, ссылающегося на C: \ log4j-application.log, но у maven есть ошибка, потому что он не существует. Это на Linux-системе. Ошибка из команды "МВН пакета":Maven jar plugin ищет несуществующий файл log4j

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 (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 
~         

Что может быть причиной этого? Покушение до сих пор:

  • МВН чистый, удален .m2/хранилище
  • удаления log4j из модуля е
  • Много прибегая к помощи
+1

Если модуль 'e' не работает, почему бы вам показать родительский pom, а не pom для модуля' e'? – kdgregory

+1

Tha path "C: \ log4j-application.log" кажется странным для Linux-системы? –

+0

@kdgregory module e pom имеет только информацию о зависимости, а не конфигурацию maven-jar или другие детали сборки, которые, как я думал, могут вызвать проблему. У родителя есть это, поэтому я подумал, что это может быть полезно. Если вы считаете, что список зависимостей может вызвать проблему, я могу ее добавить. – Matthew

ответ

0

Хорошо это определенно упущение с моей стороны. В файле e/src/main/resources был задержан файл C: \ log4j-application.log, который вызывал проблему. Как только он был удален, и я побежал на maven clean, все работало, как ожидалось.

Я думаю, что в конфигурации log4j, с которой я начал работу, был установлен файл C: \ log4j-application.log, а затем я начал получать ошибки, потому что его не было. В то время я создал файл с этим именем, используя touch в нескольких местах, чтобы обойти эту ошибку, но я никогда их не удалял. Это был пустой файл, поэтому мои команды grep -R log4j-application . так и не нашли его (я ожидал, что некоторый файл конфигурации ссылается на файл). Facepalm.

Смежные вопросы