没有依赖关系的Spring Boot可执行Jar文件

时间:2015-11-09 10:31:34

标签: spring-boot spring-boot-maven-plugin

在没有依赖项的情况下构建spring boot jar文件的最简单方法是什么? 基本上我应该能够将依赖jar文件保存在一个单独的文件夹中。

目前我正在使用spring boot maven插件,但是,它会创建一个包含所有依赖项的Fat jar文件。

4 个答案:

答案 0 :(得分:3)

spring-boot-maven-plugin有重新打包选项,可以将依赖项放入其中(制作超级jar)

您可以禁用重新打包或重新打包.jar与其他分类器[2]

一起使用
  1. http://docs.spring.io/spring-boot/docs/current/reference/html/build-tool-plugins-maven-plugin.html

  2. http://docs.spring.io/spring-boot/docs/current/maven-plugin/examples/repackage-classifier.html

答案 1 :(得分:1)

根本不要使用spring-boot-maven-plugin并使用JAR打包。这样,构建就不会将依赖关系打包到JAR中。

答案 2 :(得分:0)

将pom.xml中的构建条目替换为

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <version>3.1.1</version>
            <executions>
              <execution>
                <id>copy-dependencies</id>
                <phase>package</phase>
                <goals>
                  <goal>copy-dependencies</goal>
                </goals>
                <configuration>
                  <outputDirectory>${project.build.directory}/dependency_jar</outputDirectory>
                  <overWriteReleases>false</overWriteReleases>
                  <overWriteSnapshots>false</overWriteSnapshots>
                  <overWriteIfNewer>true</overWriteIfNewer>
                </configuration>
              </execution>
            </executions>
          </plugin>
    </plugins>

在目标文件夹中,将包含一个包含所有依赖项jar的Dependency_jar文件夹,以及“ project_name.jar”( fat jar )和“ project_name.jar.original” (代码)

答案 3 :(得分:0)

以下是我在How to Create an Executable JAR with Maven上找到的解决方案, 您只需要将它们放在您的插件中即可。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <executions>
        <execution>
            <id>copy-dependencies</id>
            <phase>prepare-package</phase>
            <goals>
                <goal>copy-dependencies</goal>
            </goals>
            <configuration>
                <outputDirectory>
                    ${project.build.directory}/libs
                </outputDirectory>
            </configuration>
        </execution>
    </executions>
</plugin>

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <configuration>
        <archive>
            <manifest>
                <addClasspath>true</addClasspath>
                <classpathPrefix>libs/</classpathPrefix>
                <mainClass>
                    org.baeldung.executable.ExecutableMavenJar
                </mainClass>
            </manifest>
        </archive>
    </configuration>
</plugin>