предупреждение от maven install для создания работающей фляги - PullRequest
0 голосов
/ 24 ноября 2011

Мы строим проект на основе Maven.Теперь я пытаюсь использовать плагин shade для создания исполняемого jar-файла.

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>1.5</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer   implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>com.myCompany.mainClass</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
<pluginRepositories>
<pluginRepository>
  <id>apache maven</id>
  <url>http://repo1.maven.org/maven2/org/apache/maven/plugins</url>
</pluginRepository>
</pluginRepositories>

Когда я запускаю maven build, он выдает много предупреждений, таких как: [WARNING] У нас есть дубликат org / slf4j /impl / StaticMDCBinder.class в C: \ Users \ maven.repo \ company \ org \ slf4j \ slf4j-nop \ 1.6.2 \ slf4j-nop-1.6.2.jar

Кажется, каждыйзависимость становится дубликатом.Может ли кто-нибудь дать мне предложение по этому поводу?Большое спасибо и счастливого благодарения.

1 Ответ

2 голосов
/ 28 ноября 2011

Используя команду maven dependency:tree, вы можете распечатать и проверить все зависимости журналирования, возможно, некоторые из них содержат дублирующиеся классы, как в этом случае http://maven.40175.n5.nabble.com/Duplicate-class-warnings-when-using-shade-plugin-td121854.html Затем используйте тег exclude, чтобы удалить из них лишние Исключитьвсе переходные зависимости одной зависимости

Также я бы порекомендовал использовать maven-assembly-plugin, который присоединяет jar с зависимостями в качестве дополнительного артефакта под настраиваемым классификатором вместо замены исходного (как в вашей конфигурации):

            <artifactId>maven-assembly-plugin</artifactId>
            <executions>
                <execution>
                    <goals>
                        <goal>attached</goal>
                    </goals>
                    <phase>package</phase>
                    <configuration>
                        <descriptorRefs>
                            <descriptorRef>jar-with-dependencies</descriptorRef>
                        </descriptorRefs>
                        <archive>
                            <manifest>
                                <mainClass>com.myCompany.mainClass</mainClass>
                            </manifest>
                        </archive>
                    </configuration>
                </execution>
            </executions>
...