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
'source' 카테고리의 다른 글
Python에서 Oracle에 액세스하려면 어떻게 해야 합니까? (0) | 2023.03.13 |
---|---|
python으로 json 파일을 업데이트하는 방법 (0) | 2023.03.13 |
Angularjs:컨트롤러에서 요소 가져오기 (0) | 2023.03.13 |
console.log 대신 angular의 $log를 사용하는 이유는 무엇입니까? (0) | 2023.03.13 |
Typescript 컴파일러가 컴파일된 js를 다른 디렉토리에 출력하도록 하려면 어떻게 해야 합니까? (0) | 2023.03.13 |