【问题标题】:Error build maven multi-module - jar file错误构建maven多模块-jar文件
【发布时间】:2020-05-28 15:21:45
【问题描述】:

目前我有一个带有 maven 的多模块项目,在超级 pom 中我添加了项目的模块。我打算从 SparkAppBuilder 模块构建包含 SparkDriver 和 SparkProcess 项目的 jar 项目。

要从 SparkAPPBuilder 模块执行此操作,请添加 maven-assembly-plugin 插件,我看到它通过添加我的 2 个模块来构建项目,但问题是它正在生成包含所有依赖项的 jar我的本地存储库,因此 jar 的重量超过 150MB。

这是我的 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>

你知道为什么要在组装阶段添加我的整个本地存储库吗?

非常感谢。

问候

【问题讨论】:

    标签: java maven


    【解决方案1】:

    jar-with-dependencies 还包含所有传递依赖项。这些通常是运行项目所需要的,因为它们是您的依赖项的依赖项。

    所以这个罐子很大并不罕见。你应该查看你的mvn dependency:tree 大部分东西来自哪里——然后你可以通过改变你的模块的依赖关系来减少数量。

    所以:jar-with-dependencies 不包含整个本地存储库,仅包含整个依赖关系树。

    【讨论】:

    • 非常感谢您的帮助,让我检查依赖关系树,我会重新组织我的依赖关系,我想我应该使用依赖关系管理。我会在调整后立即发布我的 cmets 和结果
    猜你喜欢
    • 2020-06-20
    • 1970-01-01
    • 2019-10-07
    • 1970-01-01
    • 1970-01-01
    • 2017-07-19
    • 2014-01-15
    • 1970-01-01
    • 2021-10-11
    相关资源
    最近更新 更多