Coder Social home page Coder Social logo

shadow-log4j-transformer's Introduction

Shadow Plugin 4.0.0 and later

As of shadow plugin version 4.0.0 you don't need this transformer anymore and should use the provided transformer:

shadowJar{
  transform(com.github.jengelman.gradle.plugins.shadow.transformers.Log4j2PluginsCacheFileTransformer)
}

Log4j 2 Transformer implementation for Gradle Shadow Plugin

A shadow plugin transformer implementation for log4j to concatenate Log4j2Plugins.dat files.

This is a port of the maven-shaded-log4j-transformer.

Versioning Scheme

The version numbering scheme is has the following format: SHADOW_MAJOR.MINOR.PATCH. This is no real semantic versioning because the SHADOW_MAJOR version number correspond to the MAJOR shadow plugin version number.

At the time of writing, the latest shadow plugin version was 2.0.2. Therefore, you should use this library's version starting with 2. If you are stuck at version 1.2.4 use the library version starting with 1.

Latest Version

Download
The latest library version is 2.2.0. It requires at least Java 7.

You can get version notifications on bintray:
Get automatic notifications about new "shadow-log4j-transformer" versions

Adding the transformer implementation to your project

This implementation must work with the shadow plugin and will use Log4j 2.

You should use this implementation as library. You may use it as gradle plugin though this is not recommended anymore due to issues (e.g. #2, #3 and, #5).

Usage as library

The implementation should be used as library to provide the Log4j 2 transformer. This is as easy as shown below:

buildscript {
  dependencies {
    classpath "com.github.jengelman.gradle.plugins:shadow:2.0.2"
    classpath 'de.sebastianboegl.gradle.plugins:shadow-log4j-transformer:2.2.0'
  }
}

apply plugin: 'com.github.johnrengelman.shadow'

shadowJar {
  transform(de.sebastianboegl.gradle.plugins.shadow.transformers.Log4j2PluginsFileTransformer)
}

Not recommended: Using the apply method

The plugin applies the latest version of the shadow plugin or the one in the dependency block, hence, you don't have to apply the shadow plugin.

buildscript {
  repositories {
    maven {
      url "https://plugins.gradle.org/m2/"
    }
  }
  dependencies {
    classpath "com.github.jengelman.gradle.plugins:shadow:2.0.2"
    classpath "de.sebastianboegl.gradle.plugins:shadow-log4j-transformer:2.2.0"
  }
}

apply plugin: "de.sebastianboegl.shadow.transformer.log4j"

Not recommended: Using the Gradle plugin DSL

The order of the plugins doesn't matter:

plugins {
  id "com.github.johnrengelman.shadow" version "2.0.2"
  id "de.sebastianboegl.shadow.transformer.log4j" version "2.2.0"
}

Configuration

There is no configuration needed. The plugin adds itself as Transformer (see the shadow plugin documentation Section Controlling JAR Content Merging).

shadow-log4j-transformer's People

Contributors

debanne avatar gunkelolaf avatar theboegl avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

shadow-log4j-transformer's Issues

Shadow Transformer Usage

Hi,

we tried to replace our transformer patch with your plugin, see JabRef/jabref@565e19e
However, we get the typical errors again.
ERROR StatusLogger Unrecognized format specifier [d].
Are we doing something wrong? Maybe you can help us out!
Thanks, Stefan

Dependency error on log4j and jengelman.gradle.plugins.shadow2

Hi,

we are getting the following gradle build error on some CI systems:

Could not find any matches for org.apache.logging.log4j:log4j-core:2.+ as no versions of org.apache.logging.log4j:log4j-core are available.
 Searched in the following locations: 
https://plugins.gradle.org/m2/org/apache/logging/log4j/log4j-core/maven-metadata.xml
Required by:
project : > gradle.plugin.de.sebastianboegl.gradle.plugins:shadow-log4j-transformer:2.1.1

> Could not find any matches for com.github.jengelman.gradle.plugins:shadow:2.+ as no versions of com.github.jengelman.gradle.plugins:shadow are available.
Searched in the following locations:
https://plugins.gradle.org/m2/com/github/jengelman/gradle/plugins/shadow/maven-metadata.xml Required by: project : 
> gradle.plugin.de.sebastianboegl.gradle.plugins:shadow-log4j-transformer:2.1.1

relocation fails with shadow-log4j-transformer

I don't know if this should be here or in the shadow plugin issues..

With shadow-log4j-transformer in my build i can not anymore relocate some packages. gradle fails with message 'Cannot invoke method relocate() on null object'

I wanted to relocate all 'org' to 'vshadow.org' but it fails.
so i started relocating specific packages and noticed that I can't relocate amazonaws package com.amazonaws.services.lambda.runtime.log4j2 and cannot relocate org.apache.logging.log4j
and really these two libraries provide a log4j plugin.
without the shadow-log4j-transformer all relocations work.

this is my shadowJar task

shadowJar {

    dependencies {
        exclude(dependency('org.springframework.boot:spring-boot-loader:.*'))
    }
    mergeServiceFiles{
        //exclude 'META-INF/services/com.acme.*'
    }

    transform(de.sebastianboegl.gradle.plugins.shadow.transformers.Log4j2PluginsFileTransformer)

//this dosn't work with Log4j2PluginsFileTransformer
//    relocate('org', 'vshadow.org')
//    relocate('com', 'vshadow.com')

    relocate 'org.xmlpull', 'vshadow.org.xmlpull'

//    relocate 'com.amazonaws.services.lambda.runtime', 'vshadow.com.amazonaws.services.lambda.runtime'
//    relocate 'com.amazonaws.services.lambda.runtime.log4j2', 'vshadow.com.amazonaws.services.lambda.runtime.log4j2'

    relocate 'org.slf4j', 'vshadow.org.slf4j'
    relocate 'org.apache.common', 'vshadow.org.apache.common'
    relocate 'org.apache.logging.slf4j', 'vshadow.org.apache.logging.slf4j'
    //relocate 'org.apache.logging.log4j', 'vshadow.org.apache.logging.log4j'
    relocate 'com.thoughtworks', 'vshadow.com.thoughtworks'
    relocate 'com.google', 'vshadow.com.google'
}

and the gradle log

Task :function-runner:shadowJar FAILED
ex
java.lang.NullPointerException: Cannot invoke method relocate() on null object
at org.codehaus.groovy.runtime.NullObject.invokeMethod(NullObject.java:91)
at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:48)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
at org.codehaus.groovy.runtime.callsite.NullCallSite.call(NullCallSite.java:35)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
at com.github.jengelman.gradle.plugins.shadow.ShadowStats$relocate$1.call(Unknown Source)
at com.github.jengelman.gradle.plugins.shadow.relocation.SimpleRelocator.relocateClass(SimpleRelocator.groovy:180)
at com.github.jengelman.gradle.plugins.shadow.relocation.Relocator$relocateClass$2.call(Unknown Source)
at de.sebastianboegl.gradle.plugins.shadow.transformers.Log4j2PluginsFileTransformer.relocatePlugin(Log4j2PluginsFileTransformer.groovy:91)
at de.sebastianboegl.gradle.plugins.shadow.transformers.Log4j2PluginsFileTransformer$relocatePlugin.callStatic(Unknown Source)
at de.sebastianboegl.gradle.plugins.shadow.transformers.Log4j2PluginsFileTransformer.modifyOutputStream(Log4j2PluginsFileTransformer.groovy:74)
at com.github.jengelman.gradle.plugins.shadow.transformers.Transformer$modifyOutputStream$2.call(Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
at com.github.jengelman.gradle.plugins.shadow.transformers.Transformer$modifyOutputStream$2.call(Unknown Source)
at com.github.jengelman.gradle.plugins.shadow.tasks.ShadowCopyAction$_processTransformers_closure1.doCall(ShadowCopyAction.groovy:107)
at sun.reflect.GeneratedMethodAccessor648.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)
at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:294)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1022)
at groovy.lang.Closure.call(Closure.java:414)
at groovy.lang.Closure.call(Closure.java:430)
at org.codehaus.groovy.runtime.DefaultGroovyMethods.each(DefaultGroovyMethods.java:2040)
at org.codehaus.groovy.runtime.DefaultGroovyMethods.each(DefaultGroovyMethods.java:2025)
at org.codehaus.groovy.runtime.DefaultGroovyMethods.each(DefaultGroovyMethods.java:2066)
at org.codehaus.groovy.runtime.dgm$163.invoke(Unknown Source)
at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoMetaMethodSiteNoUnwrapNoCoerce.invoke(PojoMetaMethodSite.java:274)
at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:56)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125)
at com.github.jengelman.gradle.plugins.shadow.tasks.ShadowCopyAction.processTransformers(ShadowCopyAction.groovy:105)
at sun.reflect.GeneratedMethodAccessor653.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1213)
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodOnCurrentN(ScriptBytecodeAdapter.java:82)
at com.github.jengelman.gradle.plugins.shadow.tasks.ShadowCopyAction.this$dist$invoke$1(ShadowCopyAction.groovy)
at com.github.jengelman.gradle.plugins.shadow.tasks.ShadowCopyAction$1.methodMissing(ShadowCopyAction.groovy)
at sun.reflect.GeneratedMethodAccessor652.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93)
at groovy.lang.MetaClassImpl.invokeMissingMethod(MetaClassImpl.java:939)
at groovy.lang.MetaClassImpl.invokePropertyOrMissing(MetaClassImpl.java:1262)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1215)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1022)
at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:69)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:166)
at com.github.jengelman.gradle.plugins.shadow.tasks.ShadowCopyAction$1.execute(ShadowCopyAction.groovy:85)
at com.github.jengelman.gradle.plugins.shadow.tasks.ShadowCopyAction$1$execute.call(Unknown Source)
at com.github.jengelman.gradle.plugins.shadow.tasks.ShadowCopyAction.withResource(ShadowCopyAction.groovy:114)
at sun.reflect.GeneratedMethodAccessor651.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93)
at org.codehaus.groovy.runtime.callsite.StaticMetaMethodSite$StaticMetaMethodSiteNoUnwrapNoCoerce.invoke(StaticMetaMethodSite.java:151)
at org.codehaus.groovy.runtime.callsite.StaticMetaMethodSite.callStatic(StaticMetaMethodSite.java:102)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:214)
at com.github.jengelman.gradle.plugins.shadow.tasks.ShadowCopyAction.execute(ShadowCopyAction.groovy:80)
at org.gradle.api.internal.file.copy.NormalizingCopyActionDecorator.execute(NormalizingCopyActionDecorator.java:53)
at org.gradle.api.internal.file.copy.DuplicateHandlingCopyActionDecorator.execute(DuplicateHandlingCopyActionDecorator.java:42)
at org.gradle.api.internal.file.copy.CopyActionExecuter.execute(CopyActionExecuter.java:40)
at org.gradle.api.tasks.AbstractCopyTask.copy(AbstractCopyTask.java:174)
at com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar.copy(ShadowJar.java:73)
at sun.reflect.GeneratedMethodAccessor650.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73)
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.doExecute(StandardTaskAction.java:46)
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:39)
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:26)
at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:784)
at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:751)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$1.run(ExecuteActionsTaskExecuter.java:121)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:110)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:92)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:70)
at org.gradle.api.internal.tasks.execution.OutputDirectoryCreatingTaskExecuter.execute(OutputDirectoryCreatingTaskExecuter.java:51)
at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:62)
at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:54)
at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:60)
at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:97)
at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:87)
at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:52)
at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52)
at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54)
at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:34)
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker$1.run(DefaultTaskGraphExecuter.java:248)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110)
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:241)
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:230)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.processTask(DefaultTaskPlanExecutor.java:123)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.access$200(DefaultTaskPlanExecutor.java:79)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:104)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:98)
at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.execute(DefaultTaskExecutionPlan.java:626)
at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.executeWithTask(DefaultTaskExecutionPlan.java:581)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.run(DefaultTaskPlanExecutor.java:98)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
at java.lang.Thread.run(Thread.java:748)

FAILURE: Build failed with an exception.

  • What went wrong:
    Execution failed for task ':function-runner:shadowJar'.

Cannot invoke method relocate() on null object

  • Try:
    Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

  • Get more help at https://help.gradle.org

BUILD FAILED in 2s
26 actionable tasks: 26 executed

Error with Shadow 2.0.0

Build error:
FAILURE: Build failed with an exception.

  • What went wrong:
    Execution failed for task ':shadowJar'.

de.sebastianboegl.gradle.plugins.shadow.transformers.Log4j2PluginsFileTransformer.transform(Lcom/github/jengelman/gradle/plugins/shadow/transformers/TransformerContext;)V

Any info for 2.0.0 compatibility?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.