Spring Boot – Create Executable using Maven without Parent Pom

摘要: Not everyone likes inheriting from the spring-boot-starter-parent POM to create an executable jar/war. You may have your own corporate standard parent that you need to use, or you may just prefer to explicitly declare all your Maven configuration. In this tutorial we’ll demonstrate how to create an executable jar/war using Maven without a parent pom.

Not everyone likes inheriting from the spring-boot-starter-parent POM to create an executable jar/war. You may have your own corporate standard parent that you need to use, or you may just prefer to explicitly declare all your Maven configuration. In this tutorial we’ll demonstrate how to create an executable jar/war using Maven without a parent pom.

Create Executable JAR/WAR Without Parent Pom

We use Apache Maven to build and manage our projects dependencies. This time we don’t inherit from the spring-boot-starter-parent but include a dependencyManagement BOM. When using this BOM, we need to include the repackage goal to create an executable jar/war file.

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
                             http://maven.apache.org/xsd/maven-4.0.0.xsd">

    <modelVersion>4.0.0</modelVersion>
    <groupId>com.memorynotfound.springboot</groupId>
    <artifactId>executable-without-parent</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <url>https://memorynotfound.com</url>
    <name>Spring Boot - ${project.artifactId}</name>
    <packaging>jar</packaging>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>1.5.3.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <mainClass>com.memorynotfound.springboot.Application</mainClass>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

</project>

Bootstrapping Spring Boot

To illustrate this example, we created a simple class that’ll print some basic output to the console.

package com.memorynotfound.springboot;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import javax.annotation.PostConstruct;

@SpringBootApplication
public class Application {

    private static Logger log = LoggerFactory.getLogger(Application.class);

    public static void main(String[] args) throws Exception {
        SpringApplication.run(Application.class, args);
    }

    @PostConstruct
    private void init(){
        log.info("creating an executable jar/war with spring boot without parent pom");
    }

}

Creating the Executable with Maven

We create the executable running the following maven goals.

mvn clean package

Running the executable

Once the previous tasks complets, we can execute the generated jar or war using the following command.

java -jar executable-without-parent.jar

Output

The previous application generates the following output.

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v1.5.3.RELEASE)

2017-05-29 09:13:57.998  INFO 959 --- [           main] c.memorynotfound.springboot.Application  : Starting Application v1.0.0-SNAPSHOT
2017-05-29 09:13:58.002 DEBUG 959 --- [           main] c.memorynotfound.springboot.Application  : Running with Spring Boot v1.5.3.RELEASE, Spring v4.3.8.RELEASE
2017-05-29 09:13:58.002  INFO 959 --- [           main] c.memorynotfound.springboot.Application  : No active profile set, falling back to default profiles: default
2017-05-29 09:13:58.532  INFO 959 --- [           main] c.memorynotfound.springboot.Application  : creating an executable jar/war with spring boot without parent pom
2017-05-29 09:13:58.707  INFO 959 --- [           main] c.memorynotfound.springboot.Application  : Started Application in 11.106 seconds (JVM running for 11.479)

Downloads

上一篇: Spring Boot Random Configuration Property Values
下一篇: Spring Boot Create Executable using Maven with Parent Pom
 评论 ( What Do You Think )
名称
邮箱
网址
评论
验证
   
 

 


  • 微信公众号

  • 我的微信

站点声明:

1、一号门博客CMS,由Python, MySQL, Nginx, Wsgi 强力驱动

2、部分文章或者资源来源于互联网, 有时候很难判断是否侵权, 若有侵权, 请联系邮箱:summer@yihaomen.com, 同时欢迎大家注册用户,主动发布无版权争议的 文章/资源.

3、鄂ICP备14001754号-3, 鄂公网安备 42280202422812号