source

Spring Boot + Gradle : 실행 가능한 jar 빌드 방법

ittop 2023. 3. 13. 20:50
반응형

Spring Boot + Gradle : 실행 가능한 jar 빌드 방법

Spring Boot + Gradle 프로젝트에서 실행 가능한 jar를 작성하려고 하는데, 현재로선 아무 것도 되지 않습니다.여기 가장 간단한 구조가 있습니다.Gradle 설정에 뭔가 누락되어 있을 가능성이 있습니다.

그라들:

buildscript {
    ext {
        springBootVersion = '1.5.8.RELEASE'
    }
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
    }
}

apply plugin: 'java'
apply plugin: 'org.springframework.boot'

group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = 1.8

repositories {
    mavenCentral()
}

jar {
    manifest {
        attributes 'Main-Class': 'com.example.demo.DemoApplication'
    }
    from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
}

dependencies {
    compile('org.springframework.boot:spring-boot-starter-web')
}

기본 구성 파일:

@RestController
@SpringBootApplication
public class DemoApplication {

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

    @GetMapping(value = "/")
    public String index() {
        return "index";
    }
}

여기에 이미지 설명 입력

java - jar 1. jar와 같은 jar 파일을 실행했을 때 다음과 같은 예외가 발생했습니다.

[main] ERROR org.springframework.boot.SpringApplication - Applicati
on startup failed
org.springframework.beans.factory.BeanDefinitionStoreException: Failed to proces
s import candidates for configuration class [com.example.demo.DemoApplication];
nested exception is java.lang.IllegalArgumentException: No auto configuration cl
asses found in META-INF/spring.factories. If you are using a custom packaging, m
ake sure that file is correct.
        at org.springframework.context.annotation.ConfigurationClassParser.proce
ssDeferredImportSelectors(ConfigurationClassParser.java:556)
        at org.springframework.context.annotation.ConfigurationClassParser.parse
(ConfigurationClassParser.java:185)
        at org.springframework.context.annotation.ConfigurationClassPostProcesso
r.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:308)
        at org.springframework.context.annotation.ConfigurationClassPostProcesso
r.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:228)
        at org.springframework.context.support.PostProcessorRegistrationDelegate
.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.ja
va:272)
        at org.springframework.context.support.PostProcessorRegistrationDelegate
.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:92)
        at org.springframework.context.support.AbstractApplicationContext.invoke
BeanFactoryPostProcessors(AbstractApplicationContext.java:687)
        at org.springframework.context.support.AbstractApplicationContext.refres
h(AbstractApplicationContext.java:525)
        at org.springframework.boot.context.embedded.EmbeddedWebApplicationConte
xt.refresh(EmbeddedWebApplicationContext.java:122)
        at org.springframework.boot.SpringApplication.refresh(SpringApplication.
java:693)
        at org.springframework.boot.SpringApplication.refreshContext(SpringAppli
cation.java:360)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java
:303)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java
:1118)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java
:1107)
        at com.example.demo.DemoApplication.main(DemoApplication.java:13)
Caused by: java.lang.IllegalArgumentException: No auto configuration classes fou
nd in META-INF/spring.factories. If you are using a custom packaging, make sure
that file is correct.
        at org.springframework.util.Assert.notEmpty(Assert.java:277)
        at org.springframework.boot.autoconfigure.AutoConfigurationImportSelecto
r.getCandidateConfigurations(AutoConfigurationImportSelector.java:153)
        at org.springframework.boot.autoconfigure.AutoConfigurationImportSelecto
r.selectImports(AutoConfigurationImportSelector.java:95)
        at org.springframework.context.annotation.ConfigurationClassParser.proce
ssDeferredImportSelectors(ConfigurationClassParser.java:547)
        ... 14 common frames omitted

뭐가 잘못됐나요?

Boot 2.x에서는 bootJar 태스크와 bootWar 태스크가 응용 프로그램의 패키징을 담당합니다.

bootJar 태스크는 실행 가능한 jar 파일 생성을 담당합니다.Java 플러그인이 적용되면 자동으로 생성됩니다.

실행 가능한 jar/war 파일이 생성되지 않을 경우 아래 gradle 작업을 수동으로 수행합니다.

$./gradlew bootJar

마찬가지로 bootWar는 실행 가능한 전쟁 파일을 생성하고 전쟁 플러그인이 적용되면 생성됩니다.

bootWar 태스크는 다음을 사용하여 실행할 수 있습니다.

$./gradlew bootWar

Spring Boot 2.x의 경우 Gradle 4.0 이후를 사용해야 합니다.

저는 당신이 제공한 모든 소스를 사용하여 프로젝트를 만들었습니다.터미널에서 "gradle build"를 실행하고 /build/libs로 전환한 다음 "java -jar attactname"을 실행하면 됩니다.

청소 및 재컴파일 해보셨습니까?어떤 버전의 Gradle을 사용하고 있습니까?

스프링 부트에서는 다음 방법으로 실행 가능한 jar 파일을 직접 생성할 수 있습니다.

springBoot { 
    executable = true 
}

시도해 보세요

jar{
    baseName = 'myapp' 
    version = 'version'
}

명령어 line.it에서 myapp-version.jar Do ./myapp-version.jar라는 이름의 jar가 생성됩니다.

자세한 내용은 다음 링크를 참조하십시오.https://docs.spring.io/spring-boot/docs/current/reference/html/deployment-install.html

최근에 2.1.4에서 Spring 부팅 애플리케이션을 사용해 보았습니다.그래들 빌드로 릴리즈합니다.

Windows CMD 디렉토리에서 다음 명령을 실행했습니다.

gradlew clean build

(필요한 JDK8이 시스템에 설치되었을 때) 아래 JAR이 생성되어 있는 것을 확인할 수 있었습니다.

<project-directory>/build/libs/<project-name-version.jar>

이것이 오래된 질문에도 도움이 되길 바랍니다.

레퍼런스:

여기에 이미지 설명 입력

내 의견이야.

spring-boot를 사용하는 경우,MANIFEST.MF파일, 이 파일을bootJar태스크, 디폴트에서는 동작하지 않습니다.jar작업.

bootJar {
    manifest {
    attributes 'Start-Class': 'com.baeldung.DemoApplication'
    }
}

systemd 서비스 등에서 사용하기 위해 .jar 파일을 실행 가능한 파일로 만들려고 할 경우.편집해야 합니다.bootJar태스크 및 활성화launchScript.

build.gradle

bootJar {
    launchScript()
}

DSL 또 grad Gradle Kotlin DSL 용 grad grad 。build.gradle.kts

tasks {
    bootJar {
        launchScript()
    }
}

이제 프로젝트의 .jar 파일을 실행 파일로 실행할 수 있습니다.

언급URL : https://stackoverflow.com/questions/46939455/spring-boot-gradle-how-to-build-executable-jar

반응형