है किसी को भी पता है कि मेरे मेवेन के निर्माण के साथ क्या हुआ? मुझे बहुत सारी डुप्लिकेट चेतावनियां मिल रही हैं।मेवेन बिल्ड [चेतावनी] हमारे पास एक डुप्लिकेट क्लास
[WARNING] We have a duplicate org/apache/commons/logging/impl/LogFactoryImpl$1.class in /home/shengjie/.m2/repository/commons-logging/commons-logging-api/1.0.4/commons-logging-api-1.0.4.jar
[WARNING] We have a duplicate org/apache/commons/logging/impl/LogFactoryImpl.class in /home/shengjie/.m2/repository/commons-logging/commons-logging-api/1.0.4/commons-logging-api-1.0.4.jar
[WARNING] We have a duplicate org/apache/commons/logging/impl/NoOpLog.class in /home/shengjie/.m2/repository/commons-logging/commons-logging-api/1.0.4/commons-logging-api-1.0.4.jar
[WARNING] We have a duplicate org/apache/commons/logging/impl/SimpleLog$1.class in /home/shengjie/.m2/repository/commons-logging/commons-logging-api/1.0.4/commons-logging-api-1.0.4.jar
[WARNING] We have a duplicate org/apache/commons/logging/impl/SimpleLog.class in /home/shengjie/.m2/repository/commons-logging/commons-logging-api/1.0.4/commons-logging-api-1.0.4.jar
[WARNING] We have a duplicate org/apache/commons/logging/impl/Jdk14Logger.class in /home/shengjie/.m2/repository/commons-logging/commons-logging-api/1.0.4/commons-logging-api-1.0.4.jar
मैं अपने स्थानीय एम 2 रेपो में देखा है, मैं आम-प्रवेश-api जार, LogFactoryImpl.class और LogFactoryImpl $ 1.class में वहाँ दो वर्गों की है। चेतावनियों में उल्लिखित सभी वर्गों के समान।
उल्लेख करने की एक बात यह है कि मैं अपने pom.xml में छाया प्लगइन का उपयोग कर रहा हूं।
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>1.4</version>
<configuration>
<createDependencyReducedPom>true</createDependencyReducedPom>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
</excludes>
</filter>
</filters>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer
implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" />
<transformer
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>com.~~~~black out my own main class here~~~~~</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
मैंने देखा है कि निर्भरता वृक्ष के रूप में नीचे
[INFO] +- org.apache.cxf:cxf-bundle-jaxrs:jar:2.5.1:compile
[INFO] | \- commons-logging:commons-logging:jar:1.1.1:compile
[INFO] \- org.apache.hadoop.hive:hive-jdbc:jar:0.7.1-cdh3u3:compile
[INFO] \- org.apache.hadoop.hive:hive-common:jar:0.7.1-cdh3u3:compile
[INFO] \- commons-logging:commons-logging-api:jar:1.0.4:compile
और की तरह लग रहा कॉमन्स-logging.jar और कॉमन्स-प्रवेश-api.jar दोनों org/अपाचे/कॉमन्स/प्रवेश/LogFactory है। कक्षा।
किसी भी तरह शाद प्लगइन उन्हें अंत में एक बिग फैट जार में निचोड़ करने की कोशिश कर रहा है। तो चेतावनी दिखा रही है। यह कहा गया है कि यह अनजान चेतावनी है। लेकिन मैं थोड़ा चिंतित हूं, एप्लिकेशन को कैसे पता चलेगा कि सटीक वर्ग का उपयोग क्यों किया जाना चाहिए यदि एक ही नाम के साथ दो डुप्लिकेट क्लास हैं?
LogFactoryImpl.class और LogFactoryImpl $ 1. नाम में $ 1 के साथ क्लास क्लास LogFactoryImpl के अंदर स्थानीय कक्षा है। – khmarbaise