Плагин Maven Shade не перемещается при регистрации - PullRequest
0 голосов
/ 19 января 2020

Я не могу заставить плагин maven shade фактически перемещать классы в другом пакете.

OcpSoft случайно заштриховал impl, регистрирующий общее достояние, в их банке с симпатичными лицами. Это делает почти невозможным отключение некоторых раздражающих сообщений журнала, потому что их затененный импл не будет воспринимать обычную конфигурацию регистрации общего ресурса.

Я решил, что лучший способ исправить это - создать затененную версию JCL. -SLF4J мост. Однако я не могу заставить плагин maven shade фактически перемещать необходимые классы.

    <dependencies>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>jcl-over-slf4j</artifactId>
            <version>1.7.30</version>
            <scope>compile</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                        <configuration>
                            <createDependencyReducedPom>false</createDependencyReducedPom>
                            <relocations>
                                <relocation>
                                    <includes>org</includes>
                                    <shadedPattern>org.ocpsoft.shade.org</shadedPattern>
                                </relocation>
                            </relocations>
                            <artifactSet>
                                <includes>
                                    <include>org.slf4j:jcl-over-slf4j</include>
                                </includes>
                            </artifactSet>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

Это приводит к следующему:

$ unzip ocpsoft-slf4j-bridge-1.0.0-SNAPSHOT.jar 
Archive:  ocpsoft-slf4j-bridge-1.0.0-SNAPSHOT.jar
   creating: META-INF/
  inflating: META-INF/MANIFEST.MF     
   creating: META-INF/maven/
   creating: META-INF/maven/com.emoneyusa.xcut/
   creating: META-INF/maven/com.emoneyusa.xcut/ocpsoft-slf4j-bridge/
  inflating: META-INF/maven/com.emoneyusa.xcut/ocpsoft-slf4j-bridge/pom.xml  
  inflating: META-INF/maven/com.emoneyusa.xcut/ocpsoft-slf4j-bridge/pom.properties  
   creating: META-INF/services/
  inflating: META-INF/services/org.apache.commons.logging.LogFactory  
   creating: org/
   creating: org/apache/
   creating: org/apache/commons/
   creating: org/apache/commons/logging/
   creating: org/apache/commons/logging/impl/
  inflating: org/apache/commons/logging/impl/NoOpLog.class  
  inflating: org/apache/commons/logging/impl/SimpleLog$1.class  
  inflating: org/apache/commons/logging/impl/SimpleLog.class  
  inflating: org/apache/commons/logging/impl/SLF4JLocationAwareLog.class  
  inflating: org/apache/commons/logging/impl/SLF4JLog.class  
  inflating: org/apache/commons/logging/impl/SLF4JLogFactory.class  
  inflating: org/apache/commons/logging/Log.class  
  inflating: org/apache/commons/logging/LogConfigurationException.class  
  inflating: org/apache/commons/logging/LogFactory.class  
   creating: META-INF/maven/org.slf4j/
   creating: META-INF/maven/org.slf4j/jcl-over-slf4j/
  inflating: META-INF/maven/org.slf4j/jcl-over-slf4j/pom.xml  
  inflating: META-INF/maven/org.slf4j/jcl-over-slf4j/pom.properties 

Я ожидал, что вышеупомянутые классы будут в пакете org.ocpsoft.shade.org.apache.commons. сейчас

1 Ответ

0 голосов
/ 21 января 2020

не совсем уверен, почему, но добавление этого в конфигурацию заставляет его работать:

 <transformers>
  <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" />
  <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer" />
 </transformers>
...