Ошибка сборки нескольких модулей maven - файл jar - PullRequest
0 голосов
/ 28 мая 2020

В настоящее время у меня есть многомодульный проект с maven, в super pom я добавил модули проектов. Из модуля SparkAppBuilder я намереваюсь создать проект jar, содержащий проекты SparkDriver и SparkProcess. ProjectStructure

Чтобы сделать это из модуля SparkAPPBuilder, добавьте плагин maven-assembly-plugin, я вижу, что он строит проект, добавляя мои 2 модуля, но проблема в том, что он генерирует jar со всеми зависимостями, которые есть в моем локальном репозитории, поэтому jar весит более 150 МБ.

Это мой SparkAppBuilderPOM:

<profile>
            <id>dev</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-assembly-plugin</artifactId>
                        <version>2.5</version>
                        <executions>
                            <execution>
                                <id>assembly</id>
                                <phase>package</phase>
                                <goals>
                                    <goal>single</goal>
                                </goals>
                                <configuration>
                                    <descriptorRefs>
                                        <descriptorRef>jar-with-dependencies</descriptorRef>
                                    </descriptorRefs>
                                    <archive>
                                        <manifest>
                                            <addClasspath>true</addClasspath>
                                            <classpathPrefix>lib/</classpathPrefix>
                                            <mainClass>com.streaming.example.DirectStreaming</mainClass>
                                        </manifest>
                                    </archive>
                                    <finalName>JavaStreamingDirect</finalName>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-jar-plugin</artifactId>
                        <version>3.1.1</version>
                        <configuration>
                            <archive>
                                <manifest>
                                    <addClasspath>true</addClasspath>
                                    <classpathPrefix>lib/</classpathPrefix>
                                    <mainClass>com.streaming.example.DirectStreaming</mainClass>
                                </manifest>
                            </archive>
                            <finalName>JavaStreamingDirect</finalName>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
...

<dependencies>
        <dependency>
            <groupId>com.spark.driver</groupId>
            <artifactId>SparkDriver</artifactId>
            <version>0.0.2-SNAPSHOT</version>
        </dependency>

        <dependency>
            <groupId>com.spark.streaming</groupId>
            <artifactId>SparkProcess</artifactId>
            <version>0.0.2-SNAPSHOT</version>
        </dependency>

    </dependencies>

Вы знаете, почему вы добавляете весь мой локальный репозиторий на этапе сборки?

Большое спасибо.

С уважением

1 Ответ

1 голос
/ 28 мая 2020

A jar-with-dependencies также содержит все транзитивные зависимости. Обычно они необходимы для запуска проекта, потому что они являются зависимостями ваших зависимостей.

Поэтому нет ничего необычного в том, что этот jar-файл большой. Вы должны посмотреть в свой mvn dependency:tree, откуда берется большая часть материала - тогда вы сможете уменьшить количество, изменив зависимости ваших модулей.

Итак: jar-with-dependencies не содержит весь локальный репозиторий, только все дерево зависимостей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...