将 Maven 应用程序打包到一个 jar 中 - 有一个例外

袜子橙色

我的应用程序中有一些依赖项,我希望在构建期间将所有依赖项打包到一个 jar 中 - 除了单个依赖项(团队的实用程序 jar)。发现如何使用 maven-assembly-plugin 构建到单个 jar,不知道如何排除特定的依赖项。

这是相关的 pom.xml 文件:

<repositories>
    <repository>
        <id>local-maven-repo</id>
        <url>file://repository_path</url>
    </repository>
</repositories>
....
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.10</source>
                <target>1.10</target>
            </configuration>
        </plugin>
        <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <finalName>app-name</finalName>
                <archive>
                    <manifest>
                        <addClasspath>true</addClasspath>
                        <mainClass>com.company.appname.Main</mainClass>
                    </manifest>
                </archive>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
                <appendAssemblyId>false</appendAssemblyId>
            </configuration>
        </plugin>
    </plugins>
</build>
...
<dependencies>
    <dependency>
        <groupId>com.company.utils</groupId>
        <artifactId>utils</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>
</dependencies>
vlad324

可能包括和排除工件会帮助你。

更具体地说,您需要创建自己的assembly.xml文件:

<assembly xmlns="http://maven.apache.org/ASSEMBLY/2.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.0.0 http://maven.apache.org/xsd/assembly-2.0.0.xsd">
    <id>jar-with-dependencies-exclude</id>
    <formats>
        <format>jar</format>
    </formats>
    <includeBaseDirectory>false</includeBaseDirectory>
    <dependencySets>
        <dependencySet>
            <outputDirectory>/</outputDirectory>
            <useProjectArtifact>true</useProjectArtifact>
            <unpack>true</unpack>
            <scope>runtime</scope>
            <excludes>
                <exclude>com.fasterxml.jackson.datatype:jackson-datatype-jsr310</exclude>
            </excludes>
        </dependencySet>
    </dependencySets>
</assembly>

然后更改您的插件配置以使用此文件:

<plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>single</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <finalName>app-name</finalName>
        <archive>
            <manifest>
                <addClasspath>true</addClasspath>
                <mainClass>com.company.appname.Main</mainClass>
            </manifest>
        </archive>
        <descriptors>
            <descriptor>src/main/assembly.xml</descriptor>
        </descriptors>
        <appendAssemblyId>false</appendAssemblyId>
    </configuration>
</plugin>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

是否可以将所有jar依赖项打包到一个大jar中?

将 WinForms(桌面应用程序)和 GameBar 应用程序打包到一个 Microsoft Store 应用程序中

如何使用Maven“ shade”插件将Apache CXF应用程序打包到整体JAR中

将 spring 子项目打包到一个 jar 中

buildr:将依赖项打包到一个jar中

我尝试将java中的String转换为Date格式,但是有一个例外

Maven 没有将声音资源打包到 JAR 中

多项目sbt构建-将所有相关的JAR打包在一个目录中

Groovy打包到一个无法使用Maven的Jar中。造成原因:java.lang.AbstractMethodError

Maven:将多个模块jar组合到一个war文件中?

将两个登录系统集成到一个应用程序中

将tarball中目录的所有内容下载-提取到现有目录中,以覆盖除一个或多个例外之外的所有内容

使用Maven将Java代码和依赖项组合到一个jar(可执行jar)中

iOS 将 Cordova 应用程序作为 webview 嵌入到另一个应用程序中

将编写在一个文件中的 Flask 应用程序部署到 Heroku

无法将类中的类从一个应用程序导入到另一个应用程序

如何将数据从一个应用程序传递到 ionic 3 中的另一个应用程序?

将多个程序打包到一个安装程序C#中(Visual 2010 Basic)

如何在 maven 中创建一个 jar?

在 Maven 生成的 jar 中包含一个 zip 文件

将一个应用程序部署到项目根目录中没有的Heroku?

将所有JS文件捆绑到一个文件中以用于angular2应用程序

当将应用程序部署为JAR时,为什么“ ..”(两个句点)不能在一个目录中工作?

将两个 Maven 模块合并到一个 jar 中,并让第三个模块在指定位置生成 jar

将SF服务打包到一个文件中

Maven:我可以在 jar 中只打包依赖项(没有应用程序)吗?

使用Maven将Spring Boot应用程序打包到React应用程序中

使用jar将Java项目构建到一个jar中(命令行)

将多个React应用程序嵌套在一个父应用程序中