【问题标题】:maven package jar + specific dependencymaven package jar + 具体依赖
【发布时间】:2023-01-19 21:51:59
【问题描述】:

我有一个 Maven 项目,我想将它打包为一个具有一些依赖项(不是全部)的 jar。

为此,我正在尝试使用 maven 程序集插件,如下所示:

<build>
    <plugins>
        <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                    <configuration>
                        <appendAssemblyId>true</appendAssemblyId>
                        <descriptors>
                            <descriptor>src/main/assembly/dependency.xml</descriptor>
                        </descriptors>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

依赖.xml

<assembly
    xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">

    <id>dependency</id>
    <formats>
        <format>jar</format>
    </formats>
    <includeBaseDirectory>false</includeBaseDirectory>

    <dependencySets>
        <dependencySet>
            <includes>
                <include>any_dependency</include>
            </includes>
            <unpack>true</unpack>
            <useProjectArtifact>true</useProjectArtifact>
            <scope>compile</scope>
        </dependencySet>
    </dependencySets>
</assembly>

但是,它会创建两个 jar:jar_project 和 jar_project_dependency。 我真的很想把两个罐子都做成一个。

有没有办法做到这一点?

提前致谢!

【问题讨论】:

  • 要创建所谓的 jar-with-dependencies,可以使用一个预定义的描述符。 maven.apache.org/plugins/maven-assembly-plugin/usage.html 但为了更灵活,您可以改用 maven-shade-plugin ...
  • 我强烈建议不要创建将在其他项目中使用的 jar-with-dependencies 以使用...这将防止覆盖等。仅适用于可执行 jar...

标签: java maven pom.xml


【解决方案1】:

我不相信还有另一种解决方法。这些 jar 将分别创建为 jar_projectjar_project_dependency。但为什么你希望将它们分开呢?

【讨论】:

  • 事实上,我想要在一起,例如,如果我将 descriptorRef 用作 jar-with-dependecies,它只会创建一个包含所有内容的 jar,但这会使 jar 变得非常大。所以我想将 jar 与我的项目一起打包,并且只打包一组特定的依赖项,而不是全部。这样我就可以将类路径指向另一个项目。
  • 如果你只想将特定的依赖项(不是全部)打包到生成的 jar 中,你必须从你的 pom 中删除其他依赖项......但这会导致类未找到问题......
【解决方案2】:

如果你需要一个不同的罐子,那么你需要使用超级罐子。

使用 uber jar 还可以控制项目依赖项的包含/排除。

点击此链接Click Here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-25
    • 2014-09-02
    • 2018-07-14
    • 2015-05-12
    相关资源
    最近更新 更多